老师,找到node.left为空的节点之后 那句代码是删除最小节点的呢
来源:6-11 删除二分搜索树的最大元素和最小元素
慕运维8677934
2019-07-06
老师这段代码有点理解不了 找到node.left为空的节点之后 那句代码是删除最小节点的呢
写回答
1回答
-
liuyubobobo
2019-07-07
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
继续加油!:)
032019-07-10
相似问题