class Solution:
def numTrees(self, n: int) -> int:
#(1)dp[i]表示,n=i时的二叉搜索树的种类
#(2)初始化:dp[0]=1,空二叉树也是一种二叉树
dp = [0] * (n+1)
dp[0],dp[1] = 1,1
#(4)遍历顺序
for i in range(2,n+1):
for j in range(1,i+1):
#(3)递推公式:dp[i]为以j为头节点的 左子树情况*右子树情况 的和
dp[i] += dp[j-1]*dp[i-j]
return dp[n]
96. 不同的二叉搜索树
最新推荐文章于 2024-09-27 11:17:47 发布
文章介绍了如何通过动态规划方法计算给定节点数n的二叉搜索树的种类,通过初始化dp数组、遍历和递推公式来求解dp[i],最终返回dp[n]作为结果。
摘要由CSDN通过智能技术生成