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含义:

dp3 = dp0 *dp2 + dp1 *dp1 + dp2 * dp0

递推公式:

dpi += dpj-1 * dpi-j

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

将i遍历到j,进行累加

初始化:

dp0 = 1

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

遍历顺序:

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

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

相关推荐
雨落在了我的手上7 分钟前
Java数据结构(十一):优先级队列(堆)
数据结构
大圣编蚕37 分钟前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
小玮看世界2 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
黎阳之光2 小时前
数字孪生赋能全域水网,实现水资源管控与节水降碳双向提升
人工智能·物联网·算法·安全·数字孪生
随意起个昵称2 小时前
【BFS】冰面滑行
算法·宽度优先
(Charon)3 小时前
【C++】定时器进阶:使用最小堆管理定时任务
c++·算法
hansang_IR3 小时前
【题解】 [省选联考 2021 A/B 卷] 卡牌游戏
c++·算法
这个DBA有点耶4 小时前
COUNT慢不是因为用了*,是这5个原因——1000万行数据实测+执行计划深度解析
数据库·mysql·算法
贾伟康4 小时前
【口算王|01】HarmonyOS ArkTS 口算题生成实战:按年级、运算类型和难度生成可控题目
算法·harmonyos·arkts·随机生成·口算题
lzx_0024 小时前
C++11(一)
开发语言·c++·算法