主题思想: 这个题也是一个典型,符合动态规划的解法。解法思路是: 先推出前几个数字,然后找其中规律,递推。
再然后,分析,验证。 比如这题,根据根节点的取值不同具体分析,
比如 n=1-4时 dp[1]-dp[4]: 1,2,5,14
AC 代码:
class Solution {
public int numTrees(int n) {
int[] dp=new int[n+1];
dp[0]=1;
dp[1]=1;
for(int level=2;level<=n;level++){
for(int root=1;root<=level;root++)
dp[level]+=dp[level-root]*dp[root-1];
}
return dp[n];
}
}