解 动态规划
https://blog.youkuaiyun.com/qq_17550379/article/details/84632621
f(i)表示 当有i个节点时,二叉树结构的个数,则
- f(0) = 1
- f(1) = 1
- f(i) = f(0)*f(i-1) + f(1)*f(i-2) + …+ f(i-1)*f(0)
class Solution:
def numTrees(self, n: int) -> int:
# 动态规划
f = [0 for i in range(n+1)]
f[0] = 1
f[1] = 1
for i in range(2, n+1):
for j in range(i):
f[i] += f[j] * f[i-j-1]
return f[n]