0
点赞
收藏
分享

微信扫一扫

【力扣-动态规划入门】【第 11 天】96. 不同的二叉搜索树

标题:96. 不同的二叉搜索树
难度:中等
天数:第11天,第2/2题

示例 1:

在这里插入图片描述

示例 2:

提示:

  • 1 <= n <= 19

为了便于理解,可查看最后解题思路:

class Solution {
    //动态规划 第 11 天 2/2
    public int numTrees(int n) {
        int[] dp = new int[n+1];
        //dp[0]赋值1 防止左子树*右子树 = 0 
        dp[0] = 1;
        for(int i = 1 ; i <= n; i++){
            //dp[i] 1-i(j)挨个当头部节点的和
            for(int j = 1; j <= i;j++){
                //元素j为头部节点   搜索树数量 = 左子树搜索树数量 * 右子树搜索树数量
                //j-1是j左子树搜索树的数量,i-j 是j 到右侧i 搜索树数量
                dp[i] += dp[j-1] * dp[i-j];
            }
        }

        return dp[n];
    }
}

------以下思路全部来自力扣大腿<代码随想录>的思路—

for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= i; j++) {
        dp[i] += dp[j - 1] * dp[i - j];
    }
}

来自力扣大腿<代码随想录>的思路

举报

相关推荐

0 条评论