红黑树的原理,双红缺陷,双黑缺陷

红黑树是一种保持平衡的二叉查找树,其插入和删除操作可能导致双红或双黑缺陷。通过特定的调整策略,如颜色转换和旋转,可以在O(1)次拓扑调整和O(logn)次重染色后恢复树的平衡状态,确保高效查找性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入

      引入红黑树的目的是为了实现在维护BST平衡的同时,尽量控制拓扑结构调整的次数,即最好做到每次动态操作后只有O(1)次的拓扑调整。

 红黑树的规则:

(1)树根必须是黑色;

(2)外部节点必须为黑色;

(3)其余节点:红节点只能有黑孩子,即不能出现相邻的父子两代都为红色;

(4)外部节点到根:所有外部节点的黑深度相同。

       在红黑树中,提升红色节点,使之与黑父亲等高,每颗红黑树都会等价于一棵4阶的B树,也叫(2,4)树,在红黑树的动态调整中,借助于B树可以方便我们理解。

插入

调用BST的插入算法,引入一个新的末端节点,并初始化时将其染为红色。如果其父亲p也为红色时,就会发生双红缺陷


p=x->parent();//父节点
g=p->parent();//祖父节点
u=(p==g->lc)?g->rc:g->lc;//叔父节点

(1)叔父节点u为黑色时,有如下两种情况


对应问题为在B树中,超级节点内有两个相邻的红色节点,可做一次3+4重构,并将中间的红色节点染为黑色,另一个相邻的黑色节点染为红色解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值