给定avl树," best"的时间复杂度是多少?计算树高的算法?
我知道树的高度是log(n),因为树中存在n个元素。但是我该如何计算高度呢?
答案 0 :(得分:0)
假设构成高度为h的树的节点数为N_h
。因此,以子项为根的树的高度为h-1
,其中N_(h-1)
个节点为h - 2
,右侧子树的最小高度为N_(h-2)
,其中N_h = N_(h -1) + N_(h -2) + 1 (i)
个节点为AVL树是平衡的(左右子树的高度差不能超过1)。
我们可以将公式编写如下
N_1 = 1
基本案例为N_2 = 2
和N_(h−1) = N_(h−2) + N_(h−3) + 1 (ii)
和
(ii)
将(i)
放入等式N_h = N_(h−2) + N_(h−3) + 1 + N_(h -2) + 1
=> N_h = 2*N_(h−2) + N_(h−3) + 2
=> N_h > 2*N_(h-2)
=> N_h > 2^(h/2)
=> log(N_h) > log(2^(h/2))
=> 2log(N_h) > h
=> h = O(log(N_h)
中我们得到
N_h
n
替换h = O(lgn)
我们可以写
<input id="custom-address" disabled />