6.1 红黑树
红黑树是一种自平衡的二叉查找树,是一种高效的查找树。红黑树通过将结点进行红黑着色,使得原本高度平衡的树结构被稍微打乱,平衡程度降低。红黑树不追求完全平衡,只要求达到部分平衡。这是一种折中的方案,大大提高了结点删除和插入的效率。红黑树具有良好的效率,它可在 O(logN)
时间内完成查找、增加、删除等操作。C++中的STL的 map 就常用到红黑树作为底层的数据结构。
红黑树具有五个特性:
每个结点要么是红的要么是黑的。
根结点是黑的。
每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。
如果一个结点是红的,那么它的两个儿子都是黑的。
对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。