方法一
这个方法是用到了数学方法,catalan数 (2n)!/((n+1)!*n!)。
def numTrees(self, n):
return math.factorial(2*n)/(math.factorial(n)*math.factorial(n+1))
方法二
第二种方法是动态规划的思想,求数量一般是用DP的思想
class Solution:
def numTrees(self, n: int) -> int:
res = [0 for i in range(n+1)]
res[0],res[1] = 1,1
for i in range(2,n+1):
for j in range(1,i+1):
res[i] += res[j-1] * res[i-j]
return res[n]