红黑树
一 红黑树的性质
红黑树是一种二叉查找树,但在每个节点上增加一个域表示节点的颜色,可以是RED或BLACK。通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。
树中每个节点包含五个域:color, data, left, right, parent。如果某个节点没有父节点或子节点,则该节点的指针域指向哨兵NIL,它的颜色是黑色的。
红黑树是具有下列着色性质的二叉查找树:
(1) 每一个节点或者桌红色,或者着黑色
(2) 根节点是黑色的
(3) 每个叶节点(NIL)是黑色的
(4) 如果一个节点是红色的,那么它的子节点必须是黑色的
(5) 从一个节点到其子孙节点的所有路径都必须包含相同数目的黑色节点。
二 红黑树的插入