Skip to content

Commit 9bf0e0a

Browse files
committed
add 095
1 parent b934529 commit 9bf0e0a

File tree

8 files changed

+379
-7
lines changed

8 files changed

+379
-7
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,5 @@ Idx | Date | Question | Python| Java | Domain | Tag | Difficulty | Remark
3838
032|20200406|[226. Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree/)|[226p](https://github.com/shishishu/leetcode-python-java/blob/master/ipynb_files/226_Invert_Binary_Tree.ipynb)|[226j](https://github.com/shishishu/leetcode-python-java/blob/master/java_codes/226/Solution.java)|Tree|Recursive/Iterative|Easy
3939
033|20200406|[110. Balanced Binary Tree](https://leetcode.com/problems/balanced-binary-tree/)|[110p](https://github.com/shishishu/leetcode-python-java/blob/master/ipynb_files/110_Balanced_Binary_Tree.ipynb)|[110j](https://github.com/shishishu/leetcode-python-java/blob/master/java_codes/110/Solution.java)|Tree|Recursive|Easy
4040
034|20200406|[96. Unique Binary Search Trees](https://leetcode.com/problems/unique-binary-search-trees/)|[096p](https://github.com/shishishu/leetcode-python-java/blob/master/ipynb_files/096_Unique_Binary_Search_Trees.ipynb)|[096j](https://github.com/shishishu/leetcode-python-java/blob/master/java_codes/096/Solution.java)|BST|DP|Medium
41-
41+
035|20200406|[95. Unique Binary Search Trees II](https://leetcode.com/problems/unique-binary-search-trees-ii/)|[095p](https://github.com/shishishu/leetcode-python-java/blob/master/ipynb_files/095_Unique_Binary_Search_Trees_II.ipynb)|[095j](https://github.com/shishishu/leetcode-python-java/blob/master/java_codes/095/Solution.java)|BST|DP|Medium
4242

images/095_Q.PNG

48.8 KB
Loading

images/095_S1.PNG

24.1 KB
Loading

images/095_S2.PNG

24 KB
Loading

ipynb_files/095_Unique_Binary_Search_Trees_II.ipynb

Lines changed: 299 additions & 0 deletions
Large diffs are not rendered by default.

ipynb_files/Untitled.ipynb

Lines changed: 0 additions & 6 deletions
This file was deleted.

java_codes/095/Solution.java

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
4+
class TreeNode {
5+
int val;
6+
TreeNode left;
7+
TreeNode right;
8+
TreeNode(int x) {
9+
val = x;
10+
}
11+
}
12+
13+
// DP
14+
class Solution {
15+
public List<TreeNode> generateTrees(int n) {
16+
List<TreeNode>[] res = new List[n+1];
17+
res[0] = new ArrayList<TreeNode>();
18+
if (n == 0){
19+
return res[0];
20+
}
21+
res[0].add(null);
22+
res[1] = new ArrayList<TreeNode>();
23+
res[1].add(new TreeNode(1));
24+
for (int i=2; i <=n ; i++){
25+
res[i] = new ArrayList<TreeNode>();
26+
for (int j=1; j<=i; j++){
27+
for (TreeNode nodeL: res[j - 1]){
28+
for (TreeNode nodeR: res[i - j]){
29+
TreeNode node = new TreeNode(j);
30+
node.left = nodeL;
31+
node.right = cloneTrees(nodeR, j);
32+
res[i].add(node);
33+
}
34+
}
35+
}
36+
}
37+
return res[n];
38+
}
39+
40+
public TreeNode cloneTrees(TreeNode node, int offset){
41+
if (node == null){
42+
return null;
43+
}
44+
TreeNode newNode = new TreeNode(node.val + offset);
45+
newNode.left = cloneTrees(node.left, offset);
46+
newNode.right = cloneTrees(node.right, offset);
47+
return newNode;
48+
}
49+
}
50+
51+
// Recursive
52+
class Solution {
53+
public List<TreeNode> generateTrees(int n) {
54+
return (n == 0)?new ArrayList<TreeNode>(): geneTrees(1, n);
55+
}
56+
57+
public TreeNode formatNode(int val, TreeNode left, TreeNode right){
58+
TreeNode newNode = new TreeNode(val);
59+
newNode.left = left;
60+
newNode.right = right;
61+
return newNode;
62+
}
63+
64+
public List<TreeNode> geneTrees(int lo, int hi){
65+
List<TreeNode> res = new ArrayList<TreeNode>();
66+
for (int i=lo; i<=hi; i++){
67+
for(TreeNode nodeL: geneTrees(lo, i - 1)){
68+
for (TreeNode nodeR: geneTrees(i + 1, hi)){
69+
res.add(formatNode(i, nodeL, nodeR));
70+
}
71+
}
72+
}
73+
if (res.isEmpty()){
74+
res.add(null);
75+
}
76+
return res;
77+
}
78+
}

java_codes/java_codes.iml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
<sourceFolder url="file://$MODULE_DIR$/226" isTestSource="false" />
3939
<sourceFolder url="file://$MODULE_DIR$/110" isTestSource="false" />
4040
<sourceFolder url="file://$MODULE_DIR$/096" isTestSource="false" />
41+
<sourceFolder url="file://$MODULE_DIR$/095" isTestSource="false" />
4142
</content>
4243
<orderEntry type="inheritedJdk" />
4344
<orderEntry type="sourceFolder" forTests="false" />

0 commit comments

Comments
 (0)