标签:
Given n, generate all structurally unique BST‘s (binary search trees) that store values 1...n.
For example,
Given n = 3, your program should return all 5 unique BST‘s shown below.
1 3 3 2 1
\ / / / \ 3 2 1 1 3 2
/ / \ 2 1 2 3
confused what "{1,#,2,3}" means? >
read more on how binary tree is serialized on OJ.
Subscribe to see which companies asked this question
//递归的方法
class Solution{
public:
vector<TreeNode*> generateTrees(int n){
return generate(1, n);
}
vector<TreeNode*> generate(int begin, int end){
vector<TreeNode*> res;
if (begin > end) res.push_back(NULL);
if (begin == end) res.push_back(new TreeNode(begin));
if (begin < end)
{
for (int k = begin; k <= end; k++){
vector<TreeNode*> l = generate(begin, k - 1);
vector<TreeNode*> r = generate(k + 1, end);
for (int i = 0; i < l.size(); i++)
{
for (int j = 0; j < r.size(); j++)
{
TreeNode* node = new TreeNode(k);
node->left = l[i];
node->right = r[j];
res.push_back(node);
}
}
}
}
return res;
}
};
LeetCode 95:Unique Binary Search Trees II
标签:
原文地址:http://blog.csdn.net/geekmanong/article/details/50448707