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数组)

相关推荐
m0_686041611 分钟前
C++中的适配器模式变体
开发语言·c++·算法
txzrxz2 分钟前
结构体排序,双指针,单调栈
数据结构·算法·双指针算法·单调栈·结构体排序
AndrewHZ5 分钟前
【AI黑话日日新】什么是AI智能体?
人工智能·算法·语言模型·大模型·llm·ai智能体
wWYy.7 分钟前
算法:二叉树最大路径和
数据结构·算法
葱明撅腚8 分钟前
利用Python挖掘城市数据
python·算法·gis·聚类
We་ct11 分钟前
LeetCode 36. 有效的数独:Set实现哈希表最优解
前端·算法·leetcode·typescript·散列表
weixin_3954489122 分钟前
main.c_cursor_0129
前端·网络·算法
CS创新实验室35 分钟前
《计算机网络》深入学:路由算法与路径选择
网络·计算机网络·算法
一条大祥脚35 分钟前
ABC357 基环树dp|懒标记线段树
数据结构·算法·图论
tod11335 分钟前
力扣高频 SQL 50 题阶段总结(四)
开发语言·数据库·sql·算法·leetcode