Skip to content

Commit f35129c

Browse files
committed
3
1 parent 27b21ea commit f35129c

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* Definition for binary tree
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8+
* };
9+
*/
10+
class Solution {
11+
public:
12+
vector<TreeNode *> generateTrees(int n) {
13+
// Start typing your C/C++ solution below
14+
// DO NOT write int main() function
15+
16+
return generateTreesHelper(1, n);
17+
}
18+
19+
vector<TreeNode *> generateTreesHelper(int left, int right) {
20+
vector<TreeNode *> trees;
21+
if (left > right) {
22+
trees.push_back(NULL);
23+
return trees;
24+
}
25+
for (int r = left; r <= right; r++) {
26+
vector<TreeNode *> left_trees = generateTreesHelper(left, r - 1);
27+
vector<TreeNode *> right_trees = generateTreesHelper(r + 1, right);
28+
for (int i = 0; i < left_trees.size(); i++) {
29+
for (int j = 0; j < right_trees.size(); j++) {
30+
TreeNode *root = new TreeNode(r);
31+
root->left = left_trees[i];
32+
root->right = right_trees[j];
33+
trees.push_back(root);
34+
}
35+
}
36+
}
37+
return trees;
38+
}
39+
};

0 commit comments

Comments
 (0)