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
题意:统计1到n能构成二叉搜索树的个数
思路:
动态规划
以i为跟几点的数,左子树由[0, i-1]构成,其右子树由[i+1, n]构成
class Solution
{
public:
int numTrees(int n)
{
if (n<0)
{
return -1;
}
vector<int> dp(n+1, 0);
dp[0] = 1;
dp[1] = 1;
for (int i=2; i<=n; i++)
{
for (int j=0; j<i; j++)
{
dp[i] += dp[j] * dp[i - j - 1];
}
}
return dp[n];
}
};