class Solution {
public:
int numTrees(int n) {
if(n==0) return 0;
vector<int> result(n+1);
for(int i=0;i<n+1;i++){
result.push_back(1);
}
result[0] = 1;
result[1] = 1;
result[2] = 2;
for(int i=3;i<=n;i++){
for(int j=0;j<i;j++){
result[i] += result[j] * result[i-j-1];
}
}
return result[n];
}
};
public:
int numTrees(int n) {
if(n==0) return 0;
vector<int> result(n+1);
for(int i=0;i<n+1;i++){
result.push_back(1);
}
result[0] = 1;
result[1] = 1;
result[2] = 2;
for(int i=3;i<=n;i++){
for(int j=0;j<i;j++){
result[i] += result[j] * result[i-j-1];
}
}
return result[n];
}
};