Skip to content

Commit d1eede3

Browse files
authored
Create 0095-unique-binary-search-trees-ii.kt
1 parent f609dd7 commit d1eede3

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution {
2+
fun generateTrees(n: Int): List<TreeNode?> {
3+
val dp = HashMap<Pair<Int, Int>, List<TreeNode?>>()
4+
5+
fun generate(l: Int, r: Int): List<TreeNode?> {
6+
if (l == r) return arrayListOf(TreeNode(l))
7+
if (l > r) return arrayListOf<TreeNode?>(null)
8+
if (dp[l to r] != null) return dp[l to r]!!
9+
10+
val res = ArrayList<TreeNode?>()
11+
for (i in l..r) {
12+
val left = generate(l, i - 1)
13+
val right = generate(i + 1, r)
14+
for (nodeLeft in left) {
15+
for (nodeRight in right) {
16+
val root = TreeNode(i, nodeLeft, nodeRight)
17+
res.add(root)
18+
}
19+
}
20+
}
21+
22+
dp[l to r] = res
23+
return res
24+
}
25+
26+
return generate(1, n)
27+
}
28+
}

0 commit comments

Comments
 (0)