leetcode 不同的二叉搜索树

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

示例 1:

输入:n = 3

输出:5

示例 2:

输入:n = 1

输出:1

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

最优子结构 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];
}
相关推荐
白毛大侠2 分钟前
内存对齐算法:向上取整到位运算
算法
Book思议-2 分钟前
【数据结构】线索二叉树之中序遍历线索化详解与实现
数据结构·算法·线索二叉树之中序遍历线索化
2501_920627613 分钟前
Flutter 框架跨平台鸿蒙开发 - 算法可视化应用
算法·flutter·华为·harmonyos
daxi1504 分钟前
C语言从入门到进阶——第18讲:内存函数
c语言·开发语言·算法
半夜删你代码·4 分钟前
24格半格区间拖拽选择
算法
小辉同志9 分钟前
17. 电话号码的字母组合
c++·算法·leetcode·深度优先
ytttr87314 分钟前
MATLAB ViBe算法视频前景提取完整实现
算法·matlab·音视频
见叶之秋14 分钟前
【数据结构】详解栈和队列
数据结构
你撅嘴真丑15 分钟前
和为给定数 与 最匹配的矩阵
c++·算法·矩阵
MimCyan17 分钟前
LeetCode hot 100 (8-11,自用2026.04.03)
leetcode