leetcode:不同的二叉树

cpp 复制代码
class Solution {
public:
    
    int numTrees(int n) 
    {
        vector<int> dp(n+1);
        dp[0] = 1;
        dp[1] = 1;
        for(int i = 2;i <= n;i++)
        {
            for(int j = 1;j <= i;j++) // 当根节点为j时
            {
                dp[i] += dp[j-1] * dp[i-j];
            }
        }
        return dp[n];
    }
};
/*  dp[i] = i个不同的数组成的二叉搜索数的个数
    假设 i = 5
    当根节点等于 1 时 ,其余数字都比1大,只能在右边 dp[i] += dp[4]
    当根节点等于 2 时,左边有一个1比2小,右边有三个比2大的数字 dp[i] += dp[1] * dp[3]
    当根节点等于 3 时,左边有两个数比3小,右边有两个数比3大的数字 dp[i] += dp[2] * dp[2]
    ...
    直到根节点等于5,左边有4个数字比5小,只能放在5的左边,dp[i] += dp[4]
*/
相关推荐
咸鱼爱学习1 小时前
【题解】B2613【深基1.习5】打字速度
数据结构·c++·算法
一匹电信狗1 小时前
【C++】C++风格的类型转换
服务器·开发语言·c++·leetcode·小程序·stl·visual studio
学学学无无止境1 小时前
力扣-上升的温度
leetcode
云青黛1 小时前
轮廓系数(一个异型簇的分类标准)
人工智能·算法·机器学习
云青黛2 小时前
肘部法找k
人工智能·算法·机器学习·聚类
CHANG_THE_WORLD2 小时前
if条件语句 三目运算符 汇编分析
汇编·算法·条件语句·if 语句·汇编分析·条件语句汇编分析
tumu_C2 小时前
无用知识研究:在trailing return type利用decltype,comma operator在对函数进行sfinae原创 [二]
开发语言·c++·算法
web安全工具库2 小时前
告别刀耕火种:用 Makefile 自动化 C 语言项目编译
linux·运维·c语言·开发语言·数据库·算法·自动化
海蓝可知天湛2 小时前
利用Genspark自定义智能体:算法竞赛测试数据反推与生成工具
算法·aigc
BothSavage2 小时前
Qwen3-VL-8B-Instruct推理测试transformer+sglang双版本
算法