数据结构:红黑树
红黑树
概念
定义:节点的颜色或红或黑的二叉搜索树,所有的外部节点(External Node)都是黑色的,并且满足如下约束:
- 颜色约束:红色节点的子节点不能为红色
- 黑高度(Black Height)约束:任意节点 u 的所有外路径的黑长度(Black Length)都相同
- 根节点是黑色的
Almost-red-black 树:根节点是红色的,满足颜色约束和黑高度约束
约定:
- \(RB_h\):黑高度为 h 的红黑树
- \(ARB_h\):黑高度为 h 的 Almost-red-black tree
递归定义:
- 外部节点是 \(RB_0\) 树,是黑色的
- 一颗二叉树是 \(RB_h\) 树如果:
- 根节点是黑色的
- 子树为 \(RB_{h-1}\) 树或 \(ARB_h\) 树
- 一棵二叉树是 \(ARB_h\) 树如果:
- 根节点是红色的
- 子树均为 \(RB_{h-1}\) 树
\(ARB_1\):

\(RB_1\):

良定义(Well-Defined)的黑高度:从根节点出发,所有外路径的黑长度都相同
可以将某个节点的所有红色子节点“展开”:

操作
插入
概略过程:
- 将新节点标记为红色(此时黑高度约束依然成立)
- 在保证黑高度约束成立的情况下,调整颜色和结构,使得颜色约束成立
在某处调整过后可能导致上层的约束不成立,需要递归向上调整
3-node Critical Cluster 满足如下条件:
- 四棵子树都是黑色的:在情况 A、B 中,如果子树 LL 为红色;或者在情况 C、D 中,如果子树 RR 为红色,那么就变成了 4-node critical cluster
- 满足 LL < L < LR < M < RL < R < RR:红黑树是一棵二叉搜索树
更多资料
[1] 红黑树操作可视化:Visualization - Red/Black Tree
浙公网安备 33010602011771号