【发布时间】:2015-10-31 08:37:47
【问题描述】:
对于给定的一组唯一数字,我如何找到最高给定高度 h 的 BST 数量并丢弃所有高度大于 h 的 BST?
我已经使用递归方法编写了代码
static int bst(int h,int n){
if(h==0&&n==0)return 1;
else if(h==0&&n==1)return 1;
else if(h==0&&n>1)return 0;
else if(h>0&&n==0)return 1;
else{
int sum=0;
for(int i=1;i<=n;i++)
sum+=bst(h-1,i-1)*bst(h-1,n-i);
return sum;
}
}
【问题讨论】:
-
动态编程,一如既往。
-
我知道如何使用动态编程计算由 n 个节点形成的 bst 总数。但是如果我们必须将树的高度限制在一个特定的数字。
-
比如4个节点,bsts的数量是14个。但是我们想限制树的高度为3。现在树的数量会更少。
-
@DavidEisenstat 你能解释一下吗?
-
按高度和节点数索引表格。
标签: algorithm binary-tree binary-search-tree dynamic-programming combinatorics