红黑树被定义成:
- 一棵二叉树,每一个节点要么是红色,要么是黑色
- 根节点一定是黑色
- 红节点不能有红孩子
- 每条从根节点到底部的路径都经过同样数量的黑节点
看个例子,这棵红黑树的根节点值是 13,是一个黑色节点。
比如红节点 8 的两个孩子是黑色节点 1 和 11,因为红节点不能有红孩子。
可以看到,从根节点 13 通向 22 的路径,经过了 13 和 25 这两个黑节点;从根节点 13 通向 11 的路径,经过了 13 和 11 这两个黑节点。因为最后一个定义就是说:
满足这些定义的红黑树可以被数学证明树的高度为 O(log n)。
要实现一棵红黑树是非常难的,其中有许多节点“插入 / 删除”需要用到旋转等操作细节,我们在这一讲中无法展开讲解,可自行查阅资料学习。