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]
*/
相关推荐
kobesdu9 分钟前
开源3D激光SLAM算法的异同点、优劣势与适配场景总结
算法·3d·机器人·ros
ZC跨境爬虫12 分钟前
3D 地球卫星轨道可视化平台开发 Day13(卫星可视化交互优化+丝滑悬停聚焦)
前端·算法·3d·json·交互
水木流年追梦15 分钟前
CodeTop Top 100 热门题目(按题型分类)
算法·leetcode
Tisfy22 分钟前
LeetCode 1722.执行交换操作后的最小汉明距离:连通图
算法·leetcode·dfs·题解·深度优先搜索·连通图
不知名的老吴29 分钟前
案例教学:最长递增子序列问题
数据结构·算法·动态规划
样例过了就是过了29 分钟前
LeetCode热题100 杨辉三角
c++·算法·leetcode·动态规划
念越37 分钟前
算法每日一题 Day05|双指针解决盛最多水的容器问题
算法·力扣
eggrall39 分钟前
Leetcode 最大连续 1 的个数 III(medium)
算法·leetcode·职场和发展
啊我不会诶39 分钟前
Educational Codeforces Round 120 (Rated for Div. 2) vp补题
c++·算法
贾斯汀玛尔斯42 分钟前
每天学一个算法--图算法(Graph Algorithms)
数据结构·算法