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];
}
相关推荐
钓鱼的肝13 小时前
csp-j-s总结(2)
c++·经验分享·笔记·算法·青少年编程
奇妙之二进制14 小时前
机器人导航路径规划算法入门(6)Dijkstra(迪杰斯特拉)算法深入解析
算法·导航
Niuguangshuo14 小时前
论文解读:Qwen2-Audio,阿里的通用音频语言模型
算法·音视频·语音识别
杜 硕14 小时前
单链表的模拟实现
数据结构
WiChP15 小时前
【V0.1B16】从零开始的2D游戏引擎开发之路
开发语言·算法·游戏引擎
番茄巴士16 小时前
手写一个 mini HashMap,彻底搞懂哈希表原理
算法
圣保罗的大教堂16 小时前
leetcode 3742. 网格中得分最大的路径 中等
leetcode
爱吃苹果的日记本16 小时前
数据结构第四课—线性表Linear List
数据结构·学习
宣宣猪的小花园.16 小时前
【机器学习】过拟合与泛化:模型为什么会“刷题很强、实战失灵”
人工智能·算法·机器学习
INGNIGHT16 小时前
624.数组列表中的最大距离(maximum)
算法·散列表