参考资料
维基(中文)
维基(英文)
算法导论(第三版)第13章
删除理解1
删除理解2
简述
红黑树(RBT)是一种自平衡的二叉搜索树(BST), 首先看BST的定义
二叉查找树,也称有序二叉树(ordered binary tree),或已排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:
- 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
- 任意节点的左、右子树也分别为二叉查找树。
- 没有键值相等的节点(no duplicate nodes)。
如图
graph TD
ROOT((1000)) --> A((100))
ROOT((1000)) --> B((10000))
A --> A1((10))
A --> A2((500))
B --> B1((5000))
B --> B2((100000))
在这些基础上再加上以下五条性质
- 每个结点要么是红的要么是黑的。
- 根结点是黑的。
- 每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。
- 如果一个结点是红的,那么它的两个儿子都是黑的。
- 对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。
graph TD
ROOT((10)) --> A((5))
ROOT((10)) --> B((15))
A --> A1((3))
A --> A2((7))
B --> B1((13))
B --> B2((20))
A1 --> A11((1))
A1 --> A12[NIL]
A2 --> A21[NIL]
A2 --> A22[NIL]
B1 --> B11[NIL]
B1 --> B12[NIL]
B2 --> B21((18))
B2 --> B22((25))
style ROOT fill: black,color:white
style A1 fill: black,color:white
style A12 fill: black,color:white
style A2 fill: black,color:white
style A21 fill: black,color:white
style A22 fill: black,color:white
style B1 fill: black,color:white
style B11 fill: black,color:white
style B12 fill: black,color:white
style B2 fill: black,color:white
style A fill: red,color:black
style A11 fill: red,color:black
style B fill: red,color:black
style B21 fill: red,color:black
style B22 fill: red,color:black
最下面应试还有一层叶子节点(nil), mermaid毕竟是画流程图的, 画树还是有点勉强