leetcode 不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

示例 1:

输入:n = 3

输出:5

示例 2:

输入:n = 1

输出:1

采用dpi 表示含有i个节点的二叉搜索树,其中二叉搜索树由左子树和右子树以及根结点组成。其中dpi由含有i-j节点的左子树和j-1节点的右子树和一个根结点组成。所以dpi的构造形式由左右子树决定。

最优子结构 dp[i]

状态转移方程:dp[i] += (dp[i - j] * dp[j - 1])

cpp 复制代码
int numTrees(int n) {
    int dp[20] = {0};
    dp[0] = 1;
    dp[1] = 1;
    for (int i = 2; i <= n; ++i) {
        for (int j = 1; j <= i; ++j) {
            dp[i] += (dp[i - j] * dp[j - 1]);
        }
    }
    return dp[n];
}
相关推荐
aramae2 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
荆棘鸟智能3 小时前
城市感知设备怎么统一接入?从多协议网关到设备模型的中间件架构设计
人工智能·算法·边缘计算
淡海水3 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
Logic1014 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
INGNIGHT7 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法
2401_839080547 小时前
C++常见八股
数据结构·c++·算法
青山是哪个青山7 小时前
LeetCode 188:买卖股票的最佳时机 IV
算法
暮雨封夕7 小时前
跳表(Skip List)详解:原理、实现、使用场景与实际应用
数据结构
mikuyyds8 小时前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis
Tisfy8 小时前
LeetCode 3498.字符串的反转度:一次遍历
leetcode·字符串·题解·遍历