public class Solution {
public int numTrees(int n) {
int[] dp = new int[n+3];
dp[0] = 1;
dp[1] = 2;
dp[2] = 5;
if(n==0)return 0;
if(n<=3)return dp[n-1];
for(int i=3; i<n;i++)
for(int j=0;j<=i;j++){
if(j<=1){
dp[i] +=dp[i-j-1];
}
else if(i-j<=1){
dp[i]+=dp[j-1];
}
else{
dp[i]+=dp[i-j-1]*dp[j-1];
}
}
return dp[n-1];
}
}
96. Unique Binary Search Trees
最新推荐文章于 2021-05-17 12:15:23 发布
本文介绍了一种计算不同二叉树数量的方法,通过动态规划实现了对于给定节点数n,返回不同二叉树的数量。代码中使用了一个整型数组dp来记录中间结果,最终返回dp[n-1]作为答案。
471

被折叠的 条评论
为什么被折叠?



