一:定义
红黑树是一种包含红黑两种节点能够自平衡的二叉查找树。
例如:
其中,红色和黑色 节点是为了实现自平衡所做的一个标识。
二: 红黑树的性质
红黑树总共有5条性质,也是由于这几条性质能够达到自平衡。
- 每个节点要么是黑色,要么是红色。(废话)
- 根节点是黑色
- 每个叶子节点(NIL)是黑色。(废话)
这里的叶子节点指的是:
不是我们之前意义上的叶子节点, 而是“叶子节点”上的空节点。 - 每个红色结点的子结点一定都是黑色。 (从根到任意一个叶子节点的路径上不会存在两个连续的红色节点)
- 从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点。
举例1:
A到其节点下的空节点(NIL)都会经过同样数量的黑色节点 3
B到其节点下的空节点(NIL)都会经过同样数量的黑色节点 2
C… 2
D…2
F…1
所以这是一颗达到了平衡的红黑树
举例2:
假如新增了一个黑色的G节点
此时它就不是一颗平衡的红黑树, 因为它违反了第5条性质
A-B-D-G-NIL 经过了4个黑色节点
A-B-E-NIL 经过了3个黑色节点
对于不平衡的红黑树, 需要经过旋转或者变色的操作使其达到平衡的效果