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.
当n = 0 时为空树,所以BST的个数为1
当n = 1 时只有一个节点,所以BST的个数为1
当n = 2 时两个节点 = f(1)*f(0) + f(0)*f(1),即两种情况:左边子树有一个节点,右边子树为空;左边子树为空,右边子树有一个节点
所以当n > 2时,可以 = f(0)*f(n-1) + f(1) * f(n-2) + ....+ f(n-2)*f(1) + f(n-1)*f(0)。
class Solution{
public:
int numTrees(int n){
if(n == 0) return 1;
if(n == 1) return 1;
int* num = new int[n+1];
num[0] = 1;
num[1] = 1;
for(int i = 2 ; i <=n ; ++i){
num[i] = 0;
for(int j = 0; j < i; ++j){
num[i] += num[j]*num[i-1-j];
}
}
return num[n];
}
};