红黑树二叉树的区别,红黑树和平衡二叉树区别

首页 > 经验 > 作者:YD1662022-11-14 14:11:33

按照第一遍的思路,我们对这两种情况执行同样的操作,最终也能保证红黑树的5条特征。

到了这一步,插入操作的所有情况就讲解完毕。另外关于左旋和右旋的知识我在这里不再说明了,因为你看到了红黑树这个程度,相信也一定看过平衡二叉树。左旋右旋哪几种情况,都会有介绍到。

3、删除节点

红黑树的删除说实话更加的复杂,如果你看过算法导论的话应该能明白一点,我们在这里也进行一个大概的讲解。

删除大致分了三种情况,

(1)第一种情况:要删除的节点有零个子节点

这种情况下最简单,也就是删除的是根节点或者是叶子节点(这里的叶子节点都是指非NULL的叶子节点),根节点直接删除即可。如果叶子节点是红色的,也可以直接删除,如果叶子节点是黑色的,那么就需要进行调整,调整的步骤和插入时调整的步骤一样。

(2)第二种情况:要删除的节点有一个子节点

这时候。把子节点的值替换掉要删除的节点的值。

红黑树二叉树的区别,红黑树和平衡二叉树区别(17)

现在我们的5把11替换掉之后,又回到了第一种情况。如果节点5是红色的,可以直接删除,如果节点5是黑色的,那么就需要进行调整,此时的节点5就是叶子节点。调整的步骤和插入时调整的步骤一样。

(3)第三种情况:要删除的节点有两个子节点

现在删除的节点有两个子节点,同样的我们可以执行第二种情况的操作,

红黑树二叉树的区别,红黑树和平衡二叉树区别(18)

若节点13之前是叶子节点,那就和第一种情况一样了,如果节点13是红色的,可以直接删除,如果节点13是黑色的,那么就需要进行调整,此时的节点13就是叶子节点。调整的步骤和插入时调整的步骤一样。

若节点13之前还有子节点,那就和第二种情况一样了。那就继续替换和判断。

以上呢就是删除的情况,最后一种情况是修改,这种情况是查找和插入的结合体,也就是先找到要修改的元素,修改完值之后,继续进行调整即可。

现在还有最后一个问题了,都说红黑树很重要,为什么重要呢?我们来看一下使用场景。

四、使用场景

红黑树的应用真的是太多了,比如说java中的HashMap和TreeMap。还有就是linux也经常使用到。这种数据结构在面试的时候是一个常问问题,希望大家能够明白和理解。如何用java手撕红黑树,在后续文章中我会添加。如有问题还请批评指正。

,
上一页12345末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.