您的位置:首页 > 产品设计 > UI/UE

LeetCode OJ:Unique Binary Search Trees(唯一二叉搜索树)

2015-10-27 11:38 531 查看
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

一开始是想用递归解决,但看了标签是dp问题,就想了一下, 数目为k的bst,其每个 0 ~ k - 1都可以分成两个区间, 然后又可以生成bst, 所以k的bst种类数等于取k左侧与右侧可划分成bst的乘机的总和,额,有点绕口额,代码清晰一点, 看代码:

class Solution {
public:
int numTrees(int n) {
vector<int> ret;
if(n == 0) return 0;
ret.reserve(n + 1);
ret[0] = 1;
for(int i = 1; i <= n; ++i){
if(i < 3){
ret[i] = i;
continue;
}
for(int j = 0; j < i; ++j){
ret[i] += ret[j] * ret[i - j - 1];
}
}
return ret
;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: