Day29: [LeetCode中等] 96. 不同的二叉搜索树
题源:
来自leetcode题库:
https://leetcode-cn.com/problems/unique-binary-search-trees/
代码:
dirty code凑合看吧
class Solution {
public:
int a[9999999]={0};
int f(int n){
if(a[n]!=0) return a[n];
int sum=0;
if(n%2==0){
int x=n/2;
for(int i=1;i<=x;i++){
sum+=f(n-i)*f(i-1);
}
sum*=2;
}else{
int x=n/2;
for(int i=1;i<=x;i++){
sum+=f(n-i)*f(i-1);
}
sum*=2;
sum+=f(x)*f(x);
}
a[n]=sum;
return sum;
}
int numTrees(int n) {
a[0]=a[1]=1;
a[2]=2;
a[3]=5;
return f(n);
}
};