请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于successor

老师,在java版本的对successor赋值时,并不需要事先重载一个Node的构造函数,请问这两种编程语言在这里为什么会有这个区别呢?我有点混淆

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2021-10-16 08:02:05

我不确定你说的重载一个构造函数是什么意思。如果你是指这句话的话:

Node *successor = new Node(minimum(node->right));


这句话不要重载构造函数,这是创建了一个新的 Node 节点,赋值给 successor。


实际上,这不是编程语言的区别,是实现上的不同,使用 Java 也可以这样写,参考这个课程的 Java 代码实现:https://git.imooc.com/coding-71/coding-71/src/master/05-Binary-Search-Tree/Course%20Code%20%28Java%29/08-Binary-Search-Tree-Remove/src/bobo/algo/BST.java 

295 行。


我在玩转数据结构的课程里,对这里做了一个优化,这个课程中,相当于先将右子树的最小值的节点删去,再以这个最小值做 key,新建了一个节点。

但是在玩转数据结构的课程中,没有真正从内存中删掉右子树最小值的节点,而是那这个节点做重新连接。


继续加油!:)


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信