文章目录
力扣算法学习day27-3
96-不同的二叉搜索树
题目

代码实现
class Solution {
    public int numTrees(int n) {
        // dp 速度 0ms
        // 1.创建dp数组,确定下标含义
        int[] dp = new int[n+1];// 由题,dp[i]应该1到n构成的互不相同的二叉搜索树种数
        // 2.确定迭代公式:参考代码随想录,讲得很完美了。
        // 迭代公式:i > 0, dp[i] += dp[j-1] * dp[i-j] ,j <= i,j从1开始遍历。
        // 3.初始化
        dp[0] = 1;
        // 4.确定遍历顺序
        for(int i = 1;i < dp.length;i++){
            for(int j = 1;j <= i;j++){
                dp[i] += dp[j-1] * dp[i-j];
            }
        }
        // 5.检验dp数组结果是否符合
        // for(int i = 0;i < dp.length;i++){
        //     System.out.print(dp[i]+",");
        // }
        return dp[n];
    }
}










