什么是红黑树?
也是一种二叉搜索树,但是每个结点上增加一个存储位表示结点的颜色,可以是RED或BLACK,它是接近平衡的
红黑树的性质也是很关键的
1)每个结点不是红的就是黑的
2)每条路径上黑色的数量必须相等
3)根结点必须是黑的
4)两个红色的不能连续
5)每个叶子结点都是黑的(指的是空节点)
思考题1
在节点的定义中,为什么要将节点的默认颜色给成红色的?
答:因为要保证每条路径上黑色结点数目相同,如果新插入的结点给为黑色,就不能保证这个条件了
红黑树的结构
为了实现关联容器,红黑树的实现中增加一个头结点,因为根结点必须为黑的,为了与根结点进行区分,将头结点也定义为黑色,并且让头结点的Parent指向根结点,left指向红黑树中最小的结点,right指向红黑树的最大的结点。
红黑树的插入操作
红黑树是在二叉树的基础上加上其平衡限制条件,因此红黑树的插入客人分为两步:
1)按照二叉搜索树的规则插入新节点
2)检测新节点插入后,红黑树的性质是否遭到破坏
因为新节点的默认颜色是红色,因此,如果其双亲结点的颜色是黑色,没有违反红黑树任何性质,则不需要调整,当新插入结点的双亲结点颜色为红色时,就违反了性质,红色不能连在一起
cur:当前结点 p:父结点 g:祖父结点 u:叔叔结点
p在g的左边和右边的情况依次分别列出了,如下图

c++红黑树
最新推荐文章于 2025-03-10 13:42:55 发布
本文深入讲解红黑树的概念,一种自平衡的二叉查找树,通过确保每条路径上黑色节点数量相等来维持平衡。文章详细介绍了红黑树的五种性质、结构特点以及插入操作的处理方式。
459

被折叠的 条评论
为什么被折叠?



