思路:动态规划,可以分为左树和右树,左树和右树加起来的元素和为n-1。
public class Solution {
public int numTrees(int n) {
return f(n,new HashMap<Integer, Integer>());
}
public int f(int n,Map<Integer,Integer> map){
if (map.get(n)!=null) {
return map.get(n);
}else {
if (n==1||n==0) {
return 1;
}else {
int sum=0;
for (int i = 0; i < n; i++) {
int left=f(i,map);
int right=f((n-1-i),map);
sum+=(left*right);
}
map.put(n,sum);
return sum;
}
}
}
}
1040

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



