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

[LeetCode] Unique Binary Search Trees II

2013-12-31 09:50 363 查看
问题:

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

分析:
一道递归的题,不是很难。

代码:

class Solution {
public:
vector<TreeNode *> generateTreesHelper(int start, int end) {
vector<TreeNode *> result;
if (start > end) {
result.push_back(NULL);
return result;
}
for (int i = start; i <= end; i ++) {
vector<TreeNode *> left = generateTreesHelper(start, i - 1);
vector<TreeNode *> right = generateTreesHelper(i + 1, end);
for (int k = 0; k < left.size(); k ++) {
for (int j = 0; j < right.size(); j ++) {
TreeNode *root = new TreeNode(i);
root->left = left[k];
root->right = right[j];
result.push_back(root);
}
}
}
return result;
}

vector<TreeNode *> generateTrees(int n) {
return generateTreesHelper(1, n);
}
};

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 算法 面试