Loading...

# 96. 不同的二叉搜索树

难度:中等

# 题目:

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

示例 1:

图1

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

提示:

  • 1 <= n <= 19

# 想法:

jj 为根节点,左子树是(1,j)(1,j), 右子树是(j+1,i)(j+1,i)。对应的个数是dp[j]dp[ij1]dp[j]*dp[i-j-1]​;

var numTrees = function(n) {
        //n 个节点对应个数
         let dp=[1,1,2];
         if(n<3){
             return dp[n];
         }
        // 从 3 到 n 计算 dp [i]      
        for(let i=3;i<=n;i++){
            let sum=0;
            // 以 j 为根节点,左子树是 1~j, 右子树是 j+1~i。对应的个数是 dp [j]*dp [i-j-1];
            for(let j=0;j<i;j++){
                sum+=dp[j]*dp[i-j-1];
            }
            dp[i]=sum;
        }
        return dp[n];
};
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

jluyeyu 微信支付

微信支付

jluyeyu 支付宝

支付宝