维基百科
包含n个内部节点的红黑树的高度是 O(log(n))。
定义:
引理: 以节点v为根的子树有至少个内部节点。
引理的证明(通过归纳高度):
基础: h(v) = 0
如果v的高度是零则它必定是 nil,因此 bh(v) = 0。所以:
归纳假设: h(v) = k 的v有 个内部节点暗示了 h() = k+1 的 有 个内部节点。
因为 有 h() > 0 所以它是个内部节点。同样的它有黑色高度要么是 bh() 要么是 bh()-1 (依据是红色还是黑色)的两个儿子。通过归纳假设每个儿子都有至少 个内部接点,所以 有:
个内部节点。
使用这个引理我们现在可以展示出树的高度是对数性的。因为在从根到叶子的任何路径上至少有一半的节点是黑色(根据红黑树属性4),根的黑色高度至少是h(root)/2。通过引理我们得到:
因此根的高度是O(log(n))。
*******************************************************************************************************************
算法导论
引例:一棵有n个内节点的红黑树高度至多为2lg(n+1)
证明:
1.先证明某一节点x为根的子树中至少包含2^[bh(x)] - 1个内节点(归纳假设)
如果:x高度为0,则x必为叶子节点,这时以x为根的子树至少包含2^[bh(x)] - 1 = 2^0 - 1= 0,
考虑x为正数,并且x有两个孩子,两个孩子的高度为bh(x)或bh(x)-1(根据孩子自身的红黑性质决定),所以假设每个孩子至少包含2^[bh(x)-1] - 1个内节点,则x = 2*(2^[bh(x)-1] - 1) + 1(x本身),则x = 2^[bh(x)] - 1,得证
根据性质4(如果一个节点为红,则其孩子必为黑)可知,高度为h的树的黑高度至少为h/2
所以 n >= 2^(h/2) - 1,所以lg(n+1) <= h/2,所以可知一个有n个内节点的红黑树高度至多为2lg(n+1),得证
*******************************************************************************************************************
由此可知,从根节点到任意节点最多经历2lg(n+1)步,因此红黑树的时间复杂度为O(lgn)
参考文献:
算法导论
维基百科:http://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91