class Solution:
def numTrees(self, n: int) -> int:
dp=[0]*(n+1)
dp[0]=1
for i in range(1,n+1):
for j in range(1,i+1):
dp[i]+=dp[i-j]*dp[j-1]
return dp[-1]
'''dp[3],就是 元素1为头结点搜索树的数量+元素2为头结点搜索树的数量+元素3为头结点搜索树的数量
元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量
元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量
元素3为头结点搜索树的数量 = 右子树有0个元素的搜索树数量 * 左子树有2个元素的搜索树数量'''
leetcode96
最新推荐文章于 2024-01-07 20:24:45 发布