leetcode:96.不同的二叉搜索树

解题思路:

输入n=3

n = 0 1个

n = 1 1个

n = 2 2个

头1+头2+头3

头1 = 左子树0节点(个数)x右子树2个节点(个数)

头2 = 左子树1节点(个数)x右子树1个节点(个数)

头3 = 左子树2节点(个数)x右子树0个节点(个数)

dp含义:

dp[3] = dp[0] *dp[2] + dp[1] *dp[1] + dp[2] * dp[0]

递推公式:

dp[i] += dp[j-1] * dp[i-j]

j相当于是头节点的元素,j-1相当于以j为头节点左子树节点数量,i-j以j为头节点右子树节点数量

将i遍历到j,进行累加

初始化:

dp[0] = 1

dp[1] = 1(可以从递推公式推出来,可以不初始化0)

遍历顺序:

从左往右,根据递推公式可知

代码实现:(最后如果结果有问题,记得打印dp数组)

相关推荐
Swift社区6 小时前
LeetCode 394. 字符串解码(Decode String)
算法·leetcode·职场和发展
tt5555555555557 小时前
LeetCode进阶算法题解详解
算法·leetcode·职场和发展
让我们一起加油好吗7 小时前
【基础算法】DFS中的剪枝与优化
算法·深度优先·剪枝
Q741_1478 小时前
C++ 模拟题 力扣495. 提莫攻击 题解 每日一题
c++·算法·leetcode·模拟
Felven8 小时前
A. Be Positive
算法
小O的算法实验室9 小时前
2026年COR SCI2区,自适应K-means和强化学习RL算法+有效疫苗分配问题,深度解析+性能实测,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
青岛少儿编程-王老师9 小时前
CCF编程能力等级认证GESP—C++7级—20250927
数据结构·c++·算法
夏鹏今天学习了吗9 小时前
【LeetCode热题100(39/100)】对称二叉树
算法·leetcode·职场和发展
天选之女wow10 小时前
【代码随想录算法训练营——Day34】动态规划——416.分割等和子集
算法·leetcode·动态规划
Boop_wu11 小时前
[数据结构] 哈希表
算法·哈希算法·散列表