红黑树是一种含有红黑结点并能自平衡的二叉查找树。具有如下性质
- 每个节点要么是黑色,要么是红色。
- 根节点是黑色。
- 每个叶子节点(NIL)是黑色。
- 每个红色结点的两个子结点一定都是黑色。
- 任意一结点到每个叶子结点的路径都包含数量相同的黑结点。
根据性质5,可以推导出:如果一个结点存在黑子结点,那么该结点肯定有两个子结点。
红黑树并不是一个完美平衡二叉查找树,根结点的左子树和右子树可以高度不同,但左子树和右子树的黑结点的层数是相等的,也即任意一个结点到到每个叶子结点的路径都包含数量相同的黑结点(性质5)。所以我们叫红黑树这种平衡为黑色完美平衡。
红黑树的自平衡是通过左旋、右旋和变色实现的。
30张图带你彻底理解红黑树