让节点数为3。
如果a,b,c ..按顺序c> a> b,那么可能的avl树是:
n=1 gives 1,n=2 gives 2..(look image)
正如我们所知的BST,它是2n C n /(n + 1)。
有人试图推导出一个能够在给出节点数时找到avl树数量的公式。
示例问题:有11个节点的可能avl树的数量是多少?
答案 0 :(得分:0)
我怀疑存在简单的公式。但是你可以通过动态编程找到许多可能的AVL树,填充2D表,其中n是节点数,h是树高,然后对所有非零n节点条目求和:
F(n, h) = Sum[by all possible i]{F(i,h-1)*F(n-1-i,h-1)} +
Sum[by all possible j]{F(j,h-1)*F(n-1-j,h-2)} +
Sum[by all possible k]{F(k,h-2)*F(n-1-k,h-1)}
说明:我们可以制作n节点h-height AVL树,连接根节点和两个等高(h-1)的有效树,或者用(h-1)和(h-2)树,或者(h-2)和(h-1)树。