找到可能的二叉搜索树的数量

时间:2016-05-07 11:14:51

标签: data-structures binary-search-tree

假设我们有密钥 1,2,3,4,5,6,7 。我必须找到可能的二叉搜索树的总数,使得二叉搜索树的高度为6

答案是 64 。但我无法找到一种模式,以便在数学上推断出答案。只是通过蛮力抽取所有可能的树木是不可能的。

可能树的一个简单示例是倾斜不平衡树,其中按键按升序和降序插入。两棵树的高度都是6.但是如何达到总和64

1 个答案:

答案 0 :(得分:2)

这可以通过施工来证明。

让我们说,
F(n)= n个数字的高度n+1的二叉搜索树的数量
声明:F(n) = 2^n

证明:

F(0) = 1 (by construction)  
F(1) = 2 (by construction) 

现在,要计算F(n),则最小数字或最大数字可以是树的根。剩下的n个数字必须排在左边的子树中(如果最大数字是根),或者右边(如果最小数字是根)

所以,

F(n) = 2*F(n-1)  
F(n) = 2^n