96. Unique Binary Search Trees
- Total Accepted: 100404
- Total Submissions: 255889
- Difficulty: Medium
- Contributors: Admin
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
解题思路:
含有n个结点的二叉搜索树,其根节点可为1~n中的任一结点。当根节点为k时,其左子树共有k-1个结点,右子树共有n-k个结点。令f(n) 为n个结点时的二叉搜索树的数目。令num(k)为顶点为k时BST的数目。所以num(k)=f(k-1)*f(n-k);计算f(n)则求num(1)~num(n)之和.
代码展示:
class Solution {
public:
int numTrees(int n) {
vector<int> ans;
ans.push_back(1);
ans.push_back(1);
ans.push_back(2);
ans.push_back(5);
for(int i=4;i<=n;i++)
{
int tmp=0;
for(int j=1;j<=i;j++)
{
tmp+=ans[j-1]*ans[i-j];
}
ans.push_back(tmp);
}
return ans[n];
}
};