红黑树的规则
- 性质1:节点是红色或黑色
- 性质2:根节点是黑色
- 性质3:每个叶子节点都是黑色的空节点(NIL节点)
- 性质4:每个红色节点的两个子节点都是黑色(从每个叶子到根的所有路径不能有两个连续的红色节点,但可以有两个黑色的)
- 性质5:从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点
红黑树的相对平衡
- 以上特性确保了从根到叶子的最长可能路径不会超过最短可能路径的两倍长
- 结果就是这个树基本是平衡的,虽然没有绝对平衡,但是依然是高效的
- 为什么可以做到最长路径不超过最短路径的两倍?
- 性质4决定了路径不能有两个相连的红色节点
- 最短路径可能都是黑色节点
- 最长路径是红色和黑色的交替
- 性质5决定了所有路径都有相同数目的黑色节点
- 所以最长路径不可能比最短路径多2倍以上
红黑树的变换
- 插入一个新节点时,有可能树不再平衡
- 插入新的节点通常是红色节点,因为红色节点有可能插入而不违反红黑树的任何规则,插入黑色节点则会导致多了黑色节点
- 插入红色节点可能产生红红相连,需要通过颜色调整和旋转来调整
- 可以通过三种当时进行变换:
- 变色:将黑色变为红色