这道题的动态方程为,即左右两边所有可能的树的组合
代码如下:
class Solution:
def numTrees(self, n: int) -> int:
import functools
@functools.lru_cache(None)
def fuc(i,j):
if i >= j: return 1
res = 0
for k in range(i,j+1):
res = res + fuc(i,k-1) * fuc(k+1,j)
return res
return fuc(1,n)