特性(除了具备二叉查找树的特性外,还具备如下特性):
(1)节点是红色或者黑色
(2)根节点是黑色
(3)每个叶子节点(也叫终端节点,简称“叶子”)都是黑色的空节点(NIL节点)
(4)每个红色节点的两个子节点都是黑色。(从每个叶子节点到根节点的路径上不能有两个连续的红色节点)
(5)从任一节点到其每个叶子的所有路劲都包含相同数目的黑色节点
优势:
(1)自平衡。红黑树从根到叶子的最长路径不会超过最短路径的2倍,解决了二叉查找树容易不平衡的缺陷(在某些情况下会退化成一个线性结构),提高了读取性能(树越平衡,读取性能就越好)。
(2)虽然AVL树具有更高的读取性能(因为平衡性更好),但是当插入或删除节点时,AVL树要复杂很多,红黑树在插入或删除节点方面具有更高的效率。
在什么情况下需要变色,在什么情况下需要旋转?
在红黑二叉树中插入节点或删除节点后,如果破坏了红黑树的规则(也就是上述的特性),则需要对修改后的红黑树进行调整,使其重新符合红黑树的规则。首先是变色(往往需要多次变色,一次改变一个节点的颜色),当变色无能为力时,就使用旋转,旋转一次之后,然后再继续多次变色,如此反复循环,直到修改后的红黑树重新符合规则。