00:02
下面呢,我们来看一下。下面我们来看一下二叉树的这个,呃,这个参数节点的一个思考题。刚才我已经讲过了,刚才我已经讲过了啊,就说如果我们要删除的节点是非叶子节点。现在我们希我们不希望将该非叶子节点为根节点的指指数删掉。打个比方。比如说我这里有一个。要我要删除三号。我们现在的方案呢,比较简单,就是直接把整棵树干掉了。好,现在呢,我们假如有这样一个规定,如果这个三它下面有子节点。我们的规定是这样子的,如果非该非叶子节点的A。就是这个要删除的这个节点为,假设为A,它只有一个子节点为B的话,就用这个B来替代A。
01:02
假,打个比方吧,假如说他没有关系。我删除删那就怎么样呢,因为这个下面可能还有。那你就做一件事情,把这个事顶上去,其实也很简单,你只要把它使用它就可以了。是不是?好,这是一个规定,第二点,如果该肺子肺非叶子节点A,左子节点它有左子节点,还有右子节点C,比如说像这个,像这个三,它有五和四都有。那么我们要求规定一个规定说让左边的这个子节点替代A,那就相当于说这个这个三被干掉了,把这个五钉上去,让它。让他这个就是让这个五顶到上面去,让这个四连到他下面去。那这个同学们能不能做出来呢?我给大家一个思路啊,我给大家思路,当然你听到后边你自己也都知道怎么做了,我先可以给你们提提个思路,其实你只需要在这儿找一下。
02:03
打开你的代码,因为你在删除的时候,在哪删的呢?大家找到你的关键代码,Delete你真正删除的时候。这个地方是删除的动作。这个地方也是删除,其实你只需要在这里和这两个if语句里面做判断。是不是就说你判断什么呢?你判断什么呢?在这里你要判断,判断就是当这个就是这个this啊,就是this this.left。的一个具体情况,因为你现在要删除的就是嘛,你现在是不是要删除this.left。对吧,因为this刚好是你要删除的,而这个this本身是这个LA的这个负节点,那你要判断它的情况是什么情况呢?如果啊,如果只有一个,只有一个节点,那这个节点你要判断是左还是右。
03:03
你要判断是左还是右,左还是右,因为左和右它处理方案又不一样,左还是右。对吧,然后根据这个不同的情况。做这个连接就可以了,然后然后根据不同的这个情况。情况做连接即可。连接即可。其实你这边要判断的,判断的就是呃,有一个节点的情况。但是里面这个一个节点是左还是右,你给我写写个判断,还有一种就是两个有有两个节点,有两个节点就是this点,那this点,那你就这样写的。This是点的点的。如果它,它不等于空。并且。并且this.left.right它也不等于空,在这种情况下就说明它有两个直节点,然后你就想根据那条规定,让他认识点right的关联到上面去,然后把另外一个点给我挂上。
04:10
啊,当然有些同学老师这个我不知道怎么实现,我先把思路放这具体实现呢,我在下面还要还要讲,大家听完了过后,晚上把这个关联给我写进去啊,我肯定这个地方我就先不写了,待会我我把后面讲了,你们自然知道这怎么写这个呢?我先告诉大家,作为一个课后题,请大家去完成,这个是课后题,大家必须去做。就要你听完了过后一定要做点东西,不管是多少,你要写一点,这是课后一定要做的啊,课后练习,当你自己不缺练习,老师也没办法,对吧,你说呃,我就不不练习,我们有很多同学呢,喜欢看代码,看是一件好事,但是你更多的要动手练一练,尤其是你不理解的地方,多写写好这个思考题我就先放这儿了,思路也给大家提供了啊,那下面呢,我们就来开始看。
05:01
我们的一个。呃,内容呢,就是重要的一个内容顺序存储,我先截段视频。
我来说两句