目录
1. 红黑树的概念
1.1 红黑树的规则
1.2 红黑树如何确保最长路径不超过最短路径的2倍呢?
1.3 红黑树的效率
2. 红黑树的实现
2.1 红黑树的结构
2.2 红黑树的插入
2.2.1 红黑树插入一个值的大概过程
2.2.2 情况1:变色
2.2.3 情况2:单旋+变色
2.2.4 情况3:双旋+变色
2.3 红黑树的插入代码实现
2.4 红黑树的查找
2.5 红黑树的高度
2.6 红黑树节点个数
2.7 红黑树的验证
2.8 红黑树的删除
2.9 红黑树的测试代码
3. 红黑树与AVL树性能对比
4. 红黑树代码
1. 红黑树的概念
红黑树时一棵二叉搜索树,他的每个节点增加一个存储位来表示节点的颜色,可以是红色或者黑色。通过对任何一条从根到叶子的路径上各个节点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是接近平衡的。
1.1 红黑树的规则
- 每个节点不是红色就是黑色
- 根节点是黑色的
- 如果一个节点是红色的,则它的两个孩子节点必须是黑色的,也就是说任意一条路径不会有连续的红色节点。
- 对于任意一个节点,从该节点到其所有NULL节点的简单路径上,均包含相同数量的黑色节点。
说明:《算法导论》等书记上补充了一条每个叶子节点(NIL)都是黑色的规则。他这里所指的叶子节点不是传统的意义上的叶子节点,而是我们说的空节点,有些书籍上也把NIL叫做外部节点。NIL是为了方便准