[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.
分析:
一道递归的题,不是很难。
代码:
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);
}
};
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 - Unique Binary Search Trees II
- leetcode 刷题之路 50 Unique Binary Search Trees II
- Leetcode Unique Binary Search Trees II
- [Leetcode] Unique Binary Search Trees II (Java)
- [LeetCode] Unique Binary Search Trees II
- LeetCode-Unique Binary Search Trees II
- leetcode 095 —— Unique Binary Search Trees II
- LeetCode——Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees II
- LeetCode 95. Unique Binary Search Trees II
- leetcode-Unique Binary Search Trees II
- leetcode 95. Unique Binary Search Trees II-分治算法|动态规划|卡特兰数
- leetcode_095 Unique Binary Search Trees II
- [LeetCode] Unique Binary Search Trees II
- 【LeetCode】Unique Binary Search Trees I && II
- 2 Unique Binary Search Trees II_Leetcode
- Leetcode: Unique Binary Search Trees II
- LeetCode 95: Unique Binary Search Trees II
- 【LeetCode】95. Unique Binary Search Trees II
- [Leetcode]Unique Binary Search Trees II