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

Find the number of possible binary search tree

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

答案是64。但是我无法找到一种模式来从数学上推导出答案。仅靠蛮力绘制所有可能的树是不可能的。

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

这可以通过构造来证明。

假设,
F(n) = 高度为 n 的二叉搜索树的数量 n+1 numbers
声明: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