File tree 1 file changed +36
-0
lines changed
1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * public class TreeNode {
4
+ * int val;
5
+ * TreeNode left;
6
+ * TreeNode right;
7
+ * TreeNode(int x) { val = x; }
8
+ * }
9
+ */
10
+ class Solution {
11
+ public List <TreeNode > generateTrees (int n ) {
12
+ if (n == 0 ) return new LinkedList <TreeNode >();
13
+ return generateSubtrees (1 , n );
14
+ }
15
+
16
+ public List <TreeNode > generateSubtrees (int s , int e ) {
17
+ List <TreeNode > res = new LinkedList <>();
18
+ if (s > e ) {
19
+ res .add (null );
20
+ return res ;
21
+ }
22
+ for (int i = s ; i <= e ; i ++) {
23
+ List <TreeNode > left = generateSubtrees (s , i -1 );
24
+ List <TreeNode > right = generateSubtrees (i +1 , e );
25
+ for (TreeNode l : left ) {
26
+ for (TreeNode r : right ) {
27
+ TreeNode n = new TreeNode (i );
28
+ n .left = l ;
29
+ n .right = r ;
30
+ res .add (n );
31
+ }
32
+ }
33
+ }
34
+ return res ;
35
+ }
36
+ }
You can’t perform that action at this time.
0 commit comments