学习数据结构的第七天(三)

以下是关于:如何去删除二叉搜索树里面的节点的关键

1。对于上面标记的1位置,意思是说:  对于函数的内涵一定要深刻,这个函数就是返回删除对应的节点后的根,所以说右边的根 等于删除后的根

2.对于标记的2位置是说:对于如果说删除的是null的树,那么直接返回空就行了。意思是说:这是作为特殊的情况,特殊的情况一般有   空 这种东西,考虑一下就行。

特殊情况和递归的出口其实不冲突,如果说认为这是递归的出口的话,那么要结合3:  即如何缩小的来看

当然还是认定它是特殊情况理解最简单,如果刚进来的时候,是null的,那么返回空就行。

也就是说特殊情况的理解,也可以结合递归出口来理解,只是说理解为特殊情况会更加方便。

if(node==null)
return null; //因为结合了函数的意义在里面,返回的是处理后的根给它,那么返回空

3.但是对于递归出口的考虑,并不是这么想的,对于递归出口的考虑,就到达它的底部,当它面临选择的时候,它怎么做。(这一步是根据 你是如何缩小的来看的,慢慢跟着过程逐渐往下

 4.对于标记的三号位置,意思是说:删除元素就按照这三种情况来进行考虑。其实就是removeMax,removeMin ,remove普通的理解方法。

也就是说对于要删除的节点,它是不是有左子树,是不是有右子树,是不是都有,三种情况进行考虑。

5.第五点就是说,拿某个节点去替换另一个节点,意思是说:  两个节点的子树之间的关系问题。

这个节点,我拿minimum的节点去替换它。那么minimum的左子树、右子树都是相应的处理后继承即可

写完了之后,学到的一些知识点和内涵:

返回值不同,不能算重载。

猜你喜欢

转载自www.cnblogs.com/startFrom0/p/12622683.html