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];
}
};
本文介绍了一种使用动态规划方法来计算从1到n能够构成的不同二叉搜索树的数量。通过实例说明了当n等于3时,可以构成5种不同的二叉搜索树。
1万+

被折叠的 条评论
为什么被折叠?



