Skip to content

Commit b86680b

Browse files
refactor 95
1 parent a2e8541 commit b86680b

File tree

1 file changed

+35
-49
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+35
-49
lines changed

src/main/java/com/fishercoder/solutions/_95.java

Lines changed: 35 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -5,55 +5,41 @@
55
import java.util.ArrayList;
66
import java.util.List;
77

8-
/**
9-
* 95. Unique Binary Search Trees II
10-
*
11-
* Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1...n.
12-
13-
For example,
14-
Given n = 3, your program should return all 5 unique BST's shown below.
15-
16-
1 3 3 2 1
17-
\ / / / \ \
18-
3 2 1 1 3 2
19-
/ / \ \
20-
2 1 2 3
21-
*/
228
public class _95 {
239

24-
public static class Solution1 {
25-
public List<TreeNode> generateTrees(int n) {
26-
List<TreeNode> result = new ArrayList();
27-
if (n == 0) {
28-
return result;
29-
}
30-
return generateTrees(1, n);
31-
}
32-
33-
private List<TreeNode> generateTrees(int start, int end) {
34-
List<TreeNode> result = new ArrayList();
35-
if (start > end) {
36-
result.add(null);
37-
return result;
38-
}
39-
if (start == end) {
40-
result.add(new TreeNode(start));
41-
return result;
42-
}
43-
44-
for (int i = start; i <= end; i++) {
45-
List<TreeNode> leftList = generateTrees(start, i - 1);
46-
List<TreeNode> rightList = generateTrees(i + 1, end);
47-
for (TreeNode left : leftList) {
48-
for (TreeNode right : rightList) {
49-
TreeNode root = new TreeNode(i);
50-
root.left = left;
51-
root.right = right;
52-
result.add(root);
53-
}
54-
}
55-
}
56-
return result;
57-
}
58-
}
10+
public static class Solution1 {
11+
public List<TreeNode> generateTrees(int n) {
12+
List<TreeNode> result = new ArrayList();
13+
if (n == 0) {
14+
return result;
15+
}
16+
return generateTrees(1, n);
17+
}
18+
19+
private List<TreeNode> generateTrees(int start, int end) {
20+
List<TreeNode> result = new ArrayList();
21+
if (start > end) {
22+
result.add(null);
23+
return result;
24+
}
25+
if (start == end) {
26+
result.add(new TreeNode(start));
27+
return result;
28+
}
29+
30+
for (int i = start; i <= end; i++) {
31+
List<TreeNode> leftList = generateTrees(start, i - 1);
32+
List<TreeNode> rightList = generateTrees(i + 1, end);
33+
for (TreeNode left : leftList) {
34+
for (TreeNode right : rightList) {
35+
TreeNode root = new TreeNode(i);
36+
root.left = left;
37+
root.right = right;
38+
result.add(root);
39+
}
40+
}
41+
}
42+
return result;
43+
}
44+
}
5945
}

0 commit comments

Comments
 (0)