1、题目描述
输入n,n个节点能形成多少种不同的BST。
2、思路
0个节点形成0个,1.。。。1,2.。。。2;
3个节点,则必有一个节点当根节点,1当根节点,右子树由2个节点组成;2当根节点,左右两个子树都由1个节点组成;
3当根节点,左子树由两个节点组成。重复这种计算操作,直至算出n个节点。
3、代码
int numTrees(int n) {
vector<int>nums;
nums.push_back(1);
nums.push_back(1);
nums.push_back(2);
for(int i=3;i<=n;i++){
int a = 0;
for(int j=0;j<i;j++){
a+=(nums[j]*nums[i-1-j]);
}
nums.push_back(a);
}
return nums[n];
}