unique-binary-search-trees

This commit is contained in:
Gleb Koval 2021-11-08 12:56:51 +00:00
parent 84d1564464
commit f9e9a910b7
No known key found for this signature in database
GPG Key ID: DF27F6A77C48FDA0
1 changed files with 26 additions and 0 deletions

View File

@ -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]
}