File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
(#95)UniqueBinarySearchTreesII Expand file tree Collapse file tree 1 file changed +55
-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
+ return helper (1 , n );
13
+ }
14
+
15
+ private List <TreeNode > helper (int min , int max ){
16
+ List <TreeNode > res = new ArrayList <TreeNode >();
17
+ if (min > max ) return res ;
18
+
19
+ for (int rt = min ; rt <= max ; rt ++){
20
+ List <TreeNode > leftList = helper (min , rt - 1 );
21
+ List <TreeNode > rightList = helper (rt + 1 , max );
22
+
23
+ if (leftList .size () == 0 && rightList .size () == 0 ){
24
+ TreeNode root = new TreeNode (rt );
25
+ res .add (root );
26
+ }
27
+ else if (leftList .size () == 0 ){
28
+ for (TreeNode node : rightList ){
29
+ TreeNode root = new TreeNode (rt );
30
+ root .right = node ;
31
+ res .add (root );
32
+ }
33
+ }
34
+ else if (rightList .size () == 0 ){
35
+ for (TreeNode node : leftList ){
36
+ TreeNode root = new TreeNode (rt );
37
+ root .left = node ;
38
+ res .add (root );
39
+ }
40
+ }
41
+ else {
42
+ for (TreeNode right : rightList ){
43
+ for (TreeNode left : leftList ){
44
+ TreeNode root = new TreeNode (rt );
45
+ root .right = right ;
46
+ root .left = left ;
47
+ res .add (root );
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ return res ;
54
+ }
55
+ }
You can’t perform that action at this time.
0 commit comments