红黑树是一种自平衡二叉查找树,在O(log n)时间内做查找,插入和删除等操作。统计性能优化于平衡二叉树(AVL树)。
红黑两色保证树的高度近似平衡,
节点是五元组:color(颜色),key(数据),left(左孩子),right(右孩子)和p(父节点)。
颜色是红或者黑。
根和叶子必须是黑色。
某一节点为红,则两个孩子必须是黑的。
从任一节点到其叶子的所有简单路径都包含相同数目的黑色节点。
节点的插入:
(1)插入新节点必须为红色,时间O(N)。导致出现两个连续红色节点的冲突,则通过颜色调换(color flips)和树旋转来调整。如果插入黑色会导致根到叶子的路径上有一条路上,多了一个额外黑节点,会很难调整。
(2)自上而下调整为红黑树。
调整方法有三种情况,详细见http://dongxicheng.org/structure/red-black-tree/