Unique Binary Search Trees
Given n, how many structurally unique BST’s (binary search trees) that store values 1…n?
For example,
Given n = 3, there are a total of 5 unique BST’s.
1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3
class Solution {
public:
/*
如果n等于0时,结果为0;
如果n等于1时,只有一个节点,结果为1;
如果n等于2时,根节点有两种选择,结果为2;
如果n大于3时,根节点有n种选择,确定根节点后分别计算左右子树的可能情况,然后相乘就是当前根节点下所有的变形种类,之后在求和
*/
int numTrees(int n) {
int i,j;
int *dp=new int[n+1];
dp[0]=1;
dp[1]=1;
dp[2]=2;
for(i=3;i<=n;i++)
{
dp[i]=0;
for(j=0;j<i;j++)
{
dp[i]+=dp[j]*dp[i-1-j];
}
}
return dp[n];
}
};