红黑树本身是二叉树,举例:
红黑树的每个节点都带有颜色,会有一个专门的属性color在对象里记载,
红黑树有五个属性:
1,根节点是黑色的
2,节点是红色或黑色的
3,所有叶节点(也就是NIL)都是黑色的
*4,红色节点的儿子都是黑色的,也就是说红色的节点不能靠着
*5,从任一节点到每个叶节点的简单路径包含相同的黑色节点。(4,5重要)
这些属性就约束了红黑树:从根节点到叶子的最长路径不可能大于最短路径的两倍。因为(黑+红)/黑 < 2。
优点:这个性质使红黑树大致平衡,也就是使红黑树尽可能矮。因为插入删除和查找的时间复杂度是跟树高成正比的,所以数矮效率就高。
注意,nil一般都是空的,但是空并不表示不存在,我们算黑色的时候是要把这些黑色的叶节点算进去的。
红黑树进阶:http://blog.csdn.net/v_JULY_v/article/details/6105630