代码如下:
public class Solution {
static int[] src;
public int numTrees(int n) {
int max = Math.max(n+1,4);
src = new int[max];
src[0] = 1;
src[1] = 1;
src[2] = 2;
src[3] = 5;
return count(n);
}
public int count(int n){
if(src[n]!=0){
return src[n];
}
int sum = 0 ;
int i = 0 ;
int j = n-1;
while(j>=i){
if(j==i){
sum+=count(j)*count(i);
}else{
sum+=2*count(j)*count(i);
}
i++;
j--;
}
src[n] = sum;
return sum;
}
}
基本思路就是递归+状态记录