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]
相关推荐
PixelMind3 小时前
【LUT技术专题】图像自适应3DLUT
图像处理·深度学习·算法·3dlut
木子.李3474 小时前
数据结构-算法学习C++(入门)
数据库·c++·学习·算法
GIS小天4 小时前
AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月31日第94弹
人工智能·算法·机器学习·彩票
武子康5 小时前
大数据-274 Spark MLib - 基础介绍 机器学习算法 剪枝 后剪枝 ID3 C4.5 CART
大数据·人工智能·算法·机器学习·语言模型·spark-ml·剪枝
爱coding的橙子7 小时前
每日算法刷题Day19 5.31:leetcode二分答案3道题,用时1h
算法·leetcode·职场和发展
地平线开发者8 小时前
征程 6EM 常见 QConfig 配置解读与示例
算法·自动驾驶
GEEK零零七8 小时前
Leetcode 1908. Nim 游戏 II
算法·leetcode·博弈论
sbc-study9 小时前
混沌映射(Chaotic Map)
开发语言·人工智能·python·算法
Magnum Lehar9 小时前
vulkan游戏引擎game_types.h和生成build.bat实现
java·算法·游戏引擎
Christophe Chen9 小时前
strcat及其模拟实现
c语言·算法