Data structures 给定高度的最大高度AVL树有多少棵?

Data structures 给定高度的最大高度AVL树有多少棵?,data-structures,tree,binary-tree,avl-tree,Data Structures,Tree,Binary Tree,Avl Tree,我很难找到一个递归公式来计算高度为h的最大高度AVL树的数目。高度0有1个,高度1有2个,高度2有4个,高度3有8个,以此类推,对吗 高度h的AVL树中的最大节点数n为n=2^0+2^1+…+2^(h-1)=2^h-1(除根节点外的每个节点都有两个子节点,这意味着每个级别的节点数是前一级别的两倍)。这就给出了高度h的公式,即节点数n为:h=log(n+1)让我们从另一个角度来看这个问题 与其求给定节点数的最大高度,不如求给定高度的最小节点数。对于这个问题,我们有一个递归函数:n(h)=n(h-1

我很难找到一个递归公式来计算高度为h的最大高度AVL树的数目。高度0有1个,高度1有2个,高度2有4个,高度3有8个,以此类推,对吗

高度
h
的AVL树中的最大节点数
n
n=2^0+2^1+…+2^(h-1)=2^h-1
(除根节点外的每个节点都有两个子节点,这意味着每个级别的节点数是前一级别的两倍)。这就给出了高度
h
的公式,即节点数
n
为:
h=log(n+1)

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

与其求给定节点数的最大高度,不如求给定高度的最小节点数。对于这个问题,我们有一个递归函数:
n(h)=n(h-1)+n(h-2)+1
,因为您至少需要右子树中的
n(h-1)
节点,左子树中的
n(h-2)
节点和一个根节点

(图片和更完整的解释)

记住这一点,您必须找到
h
,这样
n(h)
,其中n是给定的节点数

顺便说一下,简短的答案是
h<2log(n)+2