查找可能的二叉搜索树的数量
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
假设,我们有键 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