由于平衡二叉树是高度平衡的,频繁的插入和删除会进行频繁的平衡调整,导致效率下降;所以引入了红黑树,红黑树是一种弱平衡树,插入最多旋转两次,删除最多旋转三次,查找、插入和删除的时间复杂度均为O(logn),性能稳定。
红黑树
红黑树是一种二叉查找树,除了满足二叉查找树的基本特性意外,还满足如下性质:
1. 根节点是黑色的;
2. 每个叶子节点都是黑色的空节点;
3. 每个红色节点的两个子节点都是黑色(从每个叶子到根的所有路径上不能有两个连续的红色节点);
4. 从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点。
正因为有了上述约束,保证了红黑树的若平衡性,而且从根节点到叶子结点的最长路径不会超过最短路径的两倍。
当对红黑树进行插入或者删除操作时,可能会破坏以上规则,需要通过变色、左旋转和右旋转对红黑树进行调整。
插入的新结点的初始颜色都为红色,因为插入黑节点会增加某条路径上黑结点的数目,违反规则4。