day41 动态规划part3 代码随想录算法训练营 96. 不同的二叉搜索树

题目:96. 不同的二叉搜索树

我的感悟:

  • 这题,考的概率不大, 听一遍,过一遍就行。

理解难点:

  • 二叉搜索树定义
  • 为什么是累加的

听课笔记:

代码示例:

class Solution:
    def numTrees(self, n: int) -> int:
        dp = [0] * (n + 1)  # 创建一个长度为n+1的数组,初始化为0
        dp[0] = 1  # 当n为0时,只有一种情况,即空树,所以dp[0] = 1
        for i in range(1, n + 1):  # 遍历从1到n的每个数字
            for j in range(1, i + 1):  # 对于每个数字i,计算以i为根节点的二叉搜索树的数量
                dp[i] += dp[j - 1] * dp[i - j]  # 利用动态规划的思想,累加左子树和右子树的组合数量
        return dp[n]  # 返回以1到n为节点的二叉搜索树的总数量

通过截图:

扩展写法:

资料:

 

posted @ 2024-02-23 11:57  o蹲蹲o  阅读(1)  评论(0编辑  收藏  举报