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:
int numTrees(int n)
{
if(n == 1)
return 1;
else if(n == 2)
return 2;
int *ans = new int[n+1];
ans[0] = 1;
ans[1] = 1;
ans[2] = 2;
for(int i=3; i<=n; i++)
{
int tmp = 0;
for(int j=0; j<i; j++)
{
tmp += (ans[j] * ans[i-j-1]);
}
ans[i] = tmp;
}
return ans[n];
}
};