采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师这段代码有点理解不了 找到node.left为空的节点之后 那句代码是删除最小节点的呢
return rightNode; 在整棵二分搜索树中删除了当前找到的这个最小节点node。因为,return的节点跳过了node,直接返回当前node的右节点,到递归的上一层。
在递归的上一层,node.left = removeMin(node.left);接住的不再是原来的node,而是原来node的右节点,删除掉了原来的node。
注意,你给的代码,下面的递归调用,没有 node.left = 这个赋值。这个赋值是删除的核心。只调用removeMin(node.left);达不到删除的目的。
其实,这个过程其实和我们之前课程介绍的链表删除是一模一样的。回忆一下,我们在讲链表删除的时候,微观解读中,是怎么做到删除那个节点的?
也可以在参考一下这个问答,以及这个问答下其他相关问答,再仔细理解一下:)
http://coding.imooc.com/learn/questiondetail/112584.html
继续加油!:)
我觉得把rightNode赋给当前的node也是可以的
试试看?:)
特意照着后面的测试方式测试了一下,才敢过来回答,没有问题:)
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.6k 16
1.5k 17
1.4k 14
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号