请稍等 ...
×

采纳答案成功!

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

二分搜索树的一个小问题,有点小小困惑

波波老师,在二分搜索树的添加和删除元素的操作中,最终返回的node,也就是新的二分搜索树的根,其实还是原来的根(root),是吗?(排除删掉root元素的情况,并假设添加操作时,root不为空)

图片描述

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

1回答

liuyubobobo 2019-04-09 23:06:41

这个node是我们传进去的参数,不是我们在类里的成员变量root。

https://img1.sycdn.imooc.com//szimg/5cacb3730001a8f503680423.jpg


注意,我们的递归函数都是在处理以node为根节点的二分搜索树,而不是以root为根节点的整棵二分搜索树。而node是我们传进去的参数。所以,你会看到,已添加为例,有如果node == null,返回一个new Node。因为对一个空树添加一个新节点,结果就是一个新节点。但此时root不代表为空。我们的添加过程递归向下,参数是不断变化的,node也是不断变换的,最终,一定会找到node==null的时候,也就是递归到底的时候。


注意,我们递归调用的参数变化:(蓝线)

https://img1.sycdn.imooc.com//szimg/5cacb4bd0001b8e603680423.jpg


在体会一下这个递归的过程,尤其是结合我们在讲链表时所说的,递归的宏观语义和微观执行两个角度,看能不能理解这个递归的运行?


加油!:)

1 回复 有任何疑惑可以回复我~
  • 提问者 YupG #1
    有点感觉了,我再好好感悟一下,谢谢波波老师!
    回复 有任何疑惑可以回复我~ 2019-04-09 23:20:09
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信