基本概念与性质
一些直觉上的理解与说明
Q:什么是平衡?
A:平衡是从这个树的任意一个节点出发到所有叶节点的不同路径,差距不能太大。
Q:如何从直觉上确保平衡?
A:尽量保证树的内部节点的_紧凑_。即高度固定的树,内部节点尽可能的多;节点数目固定的树,其高度尽可能的矮。
Q:红黑树是如何确保平衡的(直觉上)?
A:要求从每个节点出发的路径上黑节点数目相同;要求黑节点数目不比红
节点少;故:
从同一节点出发的两条路径,差距在一倍以内。
另外,从另一角度看来,黑色节点在所有节点数目中占大头(性质4);黑色节点的分布是比较_平衡_的(性质5,性质4);故:
占大头的黑色节点的分布是平衡的,所以整个树也是比较平衡的。
红黑树性质
- 每个节点要么是红色的要么是黑色的
- 根节点是黑色的
- 每个叶节点是黑色的(该叶节点特指空节点)
- 如果一个节点是红色的,那么其两个子节点都是黑色的(每个红节点必须有两个孩子)
- 对于每个节点,从该节点到其每个后代叶节点的简单路径上,均包含相同数目的黑色节点
直觉上理解上述性质——————
注1:性质4确保了黑节点在节点总数中占大头。
注2:性质4与性质5共同确保了黑色节点的分布是_均匀平衡_的。(仅> 仅性质4不够)
****总的说来一句话:尽量确保占大头的黑色节点的分布均衡
高度相关性质的证明与直觉理解
一棵有n个内部节点的红黑树,高度至多为2lg(n+1)
证明:记节点x的黑高为bh(x)。
根据上述性质4,可以知道从根到叶节点的任何一条简单路径上,至少有一半的节点是黑色的。所以bh(t)>=h/2;根据引理1,故:
n >= 2^(bh(x))-1 >= 2^(h/2)-1
即:
h <= 2lg(n+1)
引理1:以x为根的子树,其至少包含2^(bh(x)) - 1个内部节点
证明:
归纳基础:x高度为0的时候,显然成立。
归纳递推:对于节点x,其孩子节点黑高要么是bh(x),要么是bh(x)-1(见性质4)。
故其内部节点的总数至少是:
2 * (2^(bh(x)-1) - 1) + 1 = 2^(bh(x)) - 1。
如何从直觉上理解该性质————————
1、根据紧凑性,即转变为理解:高度为h的树,至少有2^(h/2)-1个节点。
2、根据性质4,bh(x) > h/2很好理解,所以又转换为理解:高度为h的树,其至少有 2^bh(x)-1个内部节点。(这个理解转换说明了,节点的_紧凑性_基本由黑节点的高度决定。)
3、根据性质5,知道黑节点的分布是均匀,平衡的。所以根据完全二叉树的感觉有: n >= 2^(bh(x)) - 1