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];
}
};
本文介绍了一种使用动态规划方法来计算具有n个节点的不同二叉搜索树数量的C++实现。通过一个具体的类`Solution`及成员函数`numTrees`展示了如何递推地计算这些数,并给出了详细的代码实现。
479

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



