Leetcode 96. 不同的二叉搜索树

心路历程:

这道题说实话有点不好想,很难第一时间想到是DP问题,与其说这是一个动态规划,其实更像是一个找规律的问题。

假设当前有n个结点,那么以第i个结点(按大小顺序)为根节点,其左子树有i-1个结点,右子树有n-i个结点,那么其实这种情况下就有dp(i-1)*dp(n-i)种情况,然后再去遍历这个i即可。

解法:递推式DP

python 复制代码
class Solution:
    def numTrees(self, n: int) -> int:
        # 想不到这是一个动态规划题
        res = [0] * (n+1)
        res[0] = 1
        res[1] = 1
        for i in range(2, n + 1):
            for j in range(i):
                res[i] += res[j] * res[i-j-1]  # 以j为根节点,共i-1个结点,j的左子树有j个,右侧有i-1-j个            
        return res[n]
相关推荐
小O的算法实验室17 分钟前
2025年TRE SCI1区TOP,随机环境下无人机应急医疗接送与配送的先进混合方法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
小白程序员成长日记44 分钟前
2025.11.06 力扣每日一题
算法·leetcode
暴风鱼划水1 小时前
算法题(Python)数组篇 | 4.长度最小的子数组
python·算法·力扣
gugugu.1 小时前
算法:二分算法类型题目总结---(含二分模版)
算法
大G的笔记本1 小时前
算法篇常见面试题清单
java·算法·排序算法
7澄11 小时前
深入解析 LeetCode 数组经典问题:删除每行中的最大值与找出峰值
java·开发语言·算法·leetcode·intellij idea
AI科技星1 小时前
宇宙的几何诗篇:当空间本身成为运动的主角
数据结构·人工智能·经验分享·算法·计算机视觉
前端小L2 小时前
二分查找专题(二):lower_bound 的首秀——精解「搜索插入位置」
数据结构·算法
老黄编程2 小时前
三维空间圆柱方程
算法·几何
xier_ran3 小时前
关键词解释:DAG 系统(Directed Acyclic Graph,有向无环图)
python·算法