unique-binary-search-trees
This commit is contained in:
parent
84d1564464
commit
f9e9a910b7
|
@ -0,0 +1,26 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
// Time: O(n^2)
|
||||||
|
// Space: O(n)
|
||||||
|
func numTrees(n int) int {
|
||||||
|
if n < 3 {
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
trees := map[int]int{
|
||||||
|
0: 1,
|
||||||
|
1: 1,
|
||||||
|
2: 2,
|
||||||
|
}
|
||||||
|
for c := 3; c <= n; c++ {
|
||||||
|
s := 0
|
||||||
|
for p := 0; p < c/2; p++ {
|
||||||
|
s += trees[p] * trees[c-p-1] * 2
|
||||||
|
}
|
||||||
|
if (c-1)%2 == 0 {
|
||||||
|
p := (c - 1) / 2
|
||||||
|
s += trees[p] * trees[p]
|
||||||
|
}
|
||||||
|
trees[c] = s
|
||||||
|
}
|
||||||
|
return trees[n]
|
||||||
|
}
|
Loading…
Reference in New Issue