File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed
UniqueBinarySearchTreesII Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
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
+ };
You can’t perform that action at this time.
0 commit comments