计算avl树高度的复杂时间是多少?

时间:2018-06-02 19:37:20

标签: time-complexity avl-tree

给定avl树," best"的时间复杂度是多少?计算树高的算法?

我知道树的高度是log(n),因为树中存在n个元素。但是我该如何计算高度呢?

1 个答案:

答案 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 = 2N_(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 />