数据结构九之红黑树

本文介绍了红黑树的基本性质,包括它是一种自平衡的二叉搜索树,以及必须满足的5个特性。红黑树与4阶B树具有等价性,且在添加和删除节点时,通过特定的旋转操作保持平衡。相比于AVL树,红黑树的平衡标准较宽松,但在实际应用中因其良好的平均性能而更受欢迎。
摘要由CSDN通过智能技术生成

红黑树也是一种自平衡的二叉搜索树
以前也叫做平衡二叉B树(Symmetric Binary B-tree)
红黑树必须满足以下 5 条性质
1、节点是 RED 或者 BLACK
2、根节点是 BLACK
3、 叶子节点(外部节点,空节点)都是 BLACK
4、 RED 节点的子节点都是 BLACK和父节点都是黑色,从根节点到叶子节点的所有路径上不能有 2 个连续的 RED 节点
5、从任一节点到叶子节点的所有路径都包含相同数目的 BLACK 节点
在这里插入图片描述
请问下面这棵是红黑树么?
在这里插入图片描述
红黑树必须满足以下 5 条性质

  1. 节点是 RED 或者 BLACK
  2. 根节点是 BLACK
  3. 叶子节点(外部节点,空节点)都是 BLACK
  4. RED 节点的子节点都是 BLACK
    ✓ RED 节点的 parent 都是 BLACK
    ✓ 从根节点到叶子节点的所有路径上不能有 2 个连续的 RED 节点
  5. 从任一节点到叶子节点的所有路径都包含相同数目的 BLACK 节点
    上图的判断结果是否:他不是红黑树,五个性质满足了四个,但是第五条性质不满足,
    在这里插入图片描述

红黑树的等价变换
在这里插入图片描述
在这里插入图片描述 红黑树 和 4阶B树(2-3-4树)具有等价性
◼ BLACK 节点与它的 RED 子节点融合在一起,形成1个B树节点
◼ 红黑树的 BLACK 节点个数 与 4阶B树的节点总个数 相等
◼ 网上有些教程:用 2-3树 与 红黑树 进行类比,这是极其不严谨的,2-3树 并不能完美匹配 红黑树 的所有情况
◼ 注意:因为PPT界面空间有限,后面展示的红黑树都会省略 NULL 节点

红黑树 vs 2-3-4树
在这里插入图片描述
思考:如果上图最底层的 BLACK 节点是不存在的,在B树中是什么样的情形?
整棵B树只有1个节点,而且是超级节点

几个英文单词:
parent:父节点
sibling:兄弟节点
uncle:叔父节点( parent 的兄弟节点
grand:祖父节点( parent 的父节点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加
◼ 已知
B树中,新元素必定是添加到叶子节点中
4阶B树所有节点的元素个数 x 都符合 1 ≤ x ≤ 3
◼ 建议新添加的节点默认为 RED ,这样能够让红黑树的性质尽快满足(性质 1、2、3、5 都满足,性质 4 不一定
在这里插入图片描述
如果添加的是根节点,染成 BLACK 即可

◼ 有 4 种情况满足红黑树的性质 4 :parent 为 BLACK
同样也满足 4阶B树 的性质
因此不用做任何额外处理
在这里插入图片描述
在这里插入图片描述
添加 – 修复性质4 – LL\RR
在这里插入图片描述
添加 – 修复性质4 – LR\RL
在这里插入图片描述
添加 – 修复性质4 – 上溢 – LL
在这里插入图片描述
添加 – 修复性质4 – 上溢 – RR
在这里插入图片描述
添加 – 修复性质4 – 上溢 – LR
在这里插入图片描述
添加 – 修复性质4 – 上溢 – RL
在这里插入图片描述

删除

B树中,最后真正被删除的元素都在叶子节点中
在这里插入图片描述删除 – RED节点
直接删除,不用作任何调整
在这里插入图片描述
删除 – BLACK节点
在这里插入图片描述
删除 – 拥有1个RED子节点的BLACK节点
在这里插入图片描述

删除 – BLACK叶子节点 – sibling为BLACK
在这里插入图片描述
在这里插入图片描述

删除 – BLACK叶子节点 – sibling为BLACK

在这里插入图片描述

删除 – BLACK叶子节点 – sibling为RED

在这里插入图片描述

红黑树的平衡
最初遗留的困惑:为何那5条性质,就能保证红黑树是平衡的?
那5条性质,可以保证 红黑树 等价于 4阶B树
在这里插入图片描述
相比AVL树,红黑树的平衡标准比较宽松:没有一条路径会大于其他路径的2倍(节点数量)
◼ 是一种弱平衡、黑高度平衡
◼ 红黑树的最大高度是 2 ∗ log 2 (n + 1) ,依然是 O(logn) 级别

平均时间复杂度
◼ 搜索:O(logn)
◼ 添加:O(logn),O(1) 次的旋转操作
◼ 删除:O(logn),O(1) 次的旋转操作

AVL树 vs 红黑树
◼ AVL树
平衡标准比较严格:每个左右子树的高度差不超过1
最大高度是 1.44 ∗ log 2 n + 2 − 1.328 (100W个节点,AVL树最大树高28)
搜索、添加、删除都是 O(logn) 复杂度,其中添加仅需 O(1) 次旋转调整、删除最多需要 O(logn) 次旋转调整
◼ 红黑树
平衡标准比较宽松:没有一条路径会大于其他路径的2倍
最大高度是 2 ∗ log 2 (n + 1) ( 100W个节点,红黑树最大树高40)
搜索、添加、删除都是 O(logn) 复杂度,其中添加、删除都仅需 O(1) 次旋转调整
◼ 搜索的次数远远大于插入和删除,选择AVL树;搜索、插入、删除次数几乎差不多,选择红黑树
◼ 相对于AVL树来说,红黑树牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于AVL树
◼ 红黑树的平均统计性能优于AVL树,实际应用中更多选择使用红黑树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值