用于查找具有n个节点的可能AVL树的数量的公式

时间:2015-10-18 08:01:33

标签: data-structures tree avl-tree

让节点数为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树的数量是多少?

1 个答案:

答案 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)树。