红黑树有一条性质要求:如果一个节点为红色的,则它的两个子节点都是黑色。这保证了:从根到叶节点(不包括根节点)的任何一条路径上都至少有一半的节点是黑色的。(红黑树的性质还要求:对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点)。
0. 明确一些基本概念
- 树的深度和高度:
- 树的深度是从根节点开始(其深度为1)自顶向下逐层累加的,而高度是从叶节点开始(其高度为1)自底向上逐层累加的。
1. 证明:一棵有 nnn 个内部节点的红黑树的高度至多为 2lg(n+1)2\lg (n+1)2lg(n+1)
- 该定理表明了内部节点与树高之间的关系;
- 也即,在红黑树中,内部节点的数量实现了对红黑树高度的约束,使之尽可能的平衡。
首先证明,任意节点 xxx 为根的子树(递归定义)中至少(≥\geq≥)包含 2bh(x)−12^{\text{bh}(x)}-12bh(x)−1 个内部节点(n≥2bh(x)−1n\geq 2^{\text{bh}(x)}-1n≥2bh(x)−1)。欲证明这点,采用归纳法。
- xxx 的高度为 0,即 xxx 为叶节点 (T.nilT.nilT.nil,只有叶节点的高度为 0),则以 xxx 为根节点的子树至少包含 2bh(x)−1=20−1=02^{\text{bh}(x)}-1=2^0-1=02bh(x)−1=20−1=0 个内部节点。
- 考虑 xxx 的高度为正值,且有两个子节点的内部节点 xxx,则其每个子节点有黑高 bh(x)\text{bh}(x)bh