采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,在java版本的对successor赋值时,并不需要事先重载一个Node的构造函数,请问这两种编程语言在这里为什么会有这个区别呢?我有点混淆
我不确定你说的重载一个构造函数是什么意思。如果你是指这句话的话:
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,新建了一个节点。
但是在玩转数据结构的课程中,没有真正从内存中删掉右子树最小值的节点,而是那这个节点做重新连接。
继续加油!:)
登录后可查看更多问答,登录/注册
课程专为:短时间内应对面试、升职测评等艰巨任务打造
8.8k 21
5.7k 3
4.9k 5
1.4k 18