我试图证明具有N个节点的AVL树的高度最多为log N.证明:
N_h = 1 + N_h-2 + N_h-1
> 2*N_h-2 (1)
> O(2^(h/2)) (2)
h < 2*lg N_h (3)
首先,任何人都可以解释为什么2*N_h-2 > O(2^(h/2))
,我似乎并不理解这里的代数规则。另外,我不明白你如何从2*N_h-2 > O(2^(h/2))
转到h < 2*lg N_h
。
答案 0 :(得分:1)
在AVL树中,每个节点的子树高度最多相差1。
因此,如果N_h表示具有N个节点的AVL树的高度,则:
N_h >= 1 + N_h-1 + N_h-2 ( the heights of both sub-trees can differ by at most one )
>= 1 + 2*N_h-2
>= 1 + 2*( 1 + 2*N_h-4 ) (by the same recurrence relation)
= 1 + 2 + 4*N_h-4
>= 1 + 2 + 4 + 8*N_h-6
>= 1 + 2 + 4 + 8 +...+ 2^(h/2)
= 2^(h/2) - 1 (sum of geometric series)
Hence N_h >= 2^(h/2) - 1.
h/2 <= log(N_h + 1)
h <= 2*log(N_h + 1)
Hence h = O(logN)