给定高度,最大多少个AVL树?

时间:2019-02-25 04:00:57

标签: data-structures tree binary-tree avl-tree

我很难找到一个递归公式来查找高度为h的最大高度AVL树的数量。高度0有1,高度1有2,高度2有4,高度3有8,等等,对吗?

2 个答案:

答案 0 :(得分:0)

高度为n的AVL树中的节点h的最大数量为n = 2^0 + 2^1 + ... + 2^(h-1) = 2^h - 1(除根节点之外的每个节点都有两个子节点,这意味着每个级别的节点数比前一个节点多两倍)一)。这样就得出了高度h的高度公式,以节点n的形式为:h = log(n + 1)

答案 1 :(得分:0)

让我们从另一个角度来看这个问题。

代替给定节点数的最大高度,让我们找到给定高度的最小节点数。对于此问题,我们具有此递归函数:n(h) = n(h-1) + n(h-2) + 1,因为您在右子树中至少需要n(h-1)个节点,在左子树中至少需要n(h-2)个节点,而根需要一个节点。

AVL Tree (图片和更完整的说明here)。

考虑到这一点,您必须找到一个h,使得n(h) < n < n(h+1),其中n是给定的节点数。

简短的回答是h < 2log(n) + 2