当前课程知识点:数据结构(下) > 第八章 高级搜索树(下) > (xa4)红黑树:删除 > 08XA4-6 BB-2R
兄弟节点s为黑 同时它的两个孩子也都为黑的情况
我们不妨归作为BB-2
这种情况 又进而分为两种子情况
它们的区别就在于 此时的父节点p究竟是红还是黑
我们首先讨论p为红的情况
我们称这种情况为BB-2R
相应的 p为黑时自然也就是BB-2B
依然沿用我们一贯的技巧
首先将此前的红黑树 转换为对应的B树
不出意外 依然在这个位置上发生了一次下溢
不同之处在于 此时我们并不能实施旋转调整
原因正如我们所看到的 此时的兄弟关键码s
独自的构成一个超级节点
这样一个超级节点已经处于下溢的边缘
并不足以借出任何的关键码
你应该还记得在B树中我们是如何处理这种情况的
是的 合并
从父节点中取出一个关键码
并且以它作为粘合剂 将左和右两个节点合二为一
修复的结果是这样
好了 接下来我们只需要将这棵B树
反向的变换回对应的红黑树
就可以得到在红黑树中的一种可行调整方案
现在 站在红黑树的角度来审视这个调整过程
可以看到 其结果相当于r保持此前的黑色
而s呢 将由黑转红 同时p由红转黑
可见 在红黑树中的上述调整过程
完全等效于在B树中某个节点通过与它的兄弟合并来消除下溢
那么这一局部双黑缺陷的修复
是否同时也意味着红黑树的性质能够得以在全局得到恢复呢
细心的你可能会发现 无形中上层的节点
已经损失了一个关键码p
而这是否意味着在B树中接下来会再次发生下溢呢
好消息是 不会
原因在于 这里的关键码p是红色的
这就意味着 在它所属的那个B树节点中
至少还应该有一个黑色的关键码
因此在它被借出之后 不至继而发生下溢
因此与BB-1一样
我们对BB2-R的修复也必然是一蹴而就的 彻底的
好了 节点p也就是局部的子树根为红色的情况
我们已经知道如何处理
那么接下来 倘若节点p是黑色呢
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试