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];
}
相关推荐
LG.YDX5 小时前
笔试训练48天:mari和shiny(动态规划 - 线性dp)
数据结构·算法
m0_564876845 小时前
提示词应用
深度学习·学习·算法
qq_283720055 小时前
Transformer 高频面试题及答案
算法·面试·transformer
承渊政道5 小时前
【递归、搜索与回溯算法】(floodfill算法:从不会做矩阵题,到真正掌握搜索扩散思想)
数据结构·c++·算法·leetcode·矩阵·dfs·bfs
_小草鱼_5 小时前
【数据结构】链表
数据结构·链表·数组·单链表·双链表
谭欣辰5 小时前
字典树:高效字符串处理利器
c++·算法
俺爱吃萝卜5 小时前
Java 性能调优实战:从 JVM 内存模型到垃圾回收算法优化
java·jvm·算法
鹿角片ljp6 小时前
LeetCode215: 数组中的第K个最大元素 —— 从快速选择到堆排
算法·排序算法
天若有情6736 小时前
用动态规划思路,一步一步实现响应式数据(从本质到落地)
算法·动态规划·代理模式
isNotNullX6 小时前
数据挖掘是什么?数据挖掘算法有哪些?
人工智能·算法·数据挖掘