当前位置:   article > 正文

[LeetCode]96. 不同的二叉搜索树(java实现)动态规划_不同的二叉搜索树 java

不同的二叉搜索树 java

1. 题目

在这里插入图片描述
在这里插入图片描述

2. 读题(需要重点注意的东西)

思路(动态规划):
注意:长度相同时的连续数能构成的二叉搜索树的方案数是相同的
1 2 3 4 56 7 8 9 10 能够构成的方案数是相同的(1 2 3 4 5通过值映射就可以得到6 7 8 9 10)。

[LeetCode]95. 不同的二叉搜索树 II(java实现)dfs相同,对于每个长度为 i的二叉树 ,都可以任选一根节点 j ,让左右子树的任一方案进行组合。因此,我们用f[i]表示长度为i的二叉搜索树的方案数,则所有方案为所有根节点的方案数之和,取 j 为根节点时的方案数如下:
在这里插入图片描述
闫式dp分析法:
在这里插入图片描述

3. 解法

---------------------------------------------------解法---------------------------------------------------

class Solution {
    public int numTrees(int n) {
        int[] f = new int[n+1];
        f[0] = 1; // 这里如果是加法计数原理的话通常是初始状态为0,乘法计数原理的话初始状态一般是1
        for(int i = 1;i <= n;i++)
            for(int j = 1;j <= i;j++)
                f[i] += f[j-1] * f[i-j];
        return f[n];
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

可能存在的问题:

4. 可能有帮助的前置习题

5. 所用到的数据结构与算法思想

  • 动态规划

6. 总结

长度相同时的连续数能构成的二叉搜索树的方案数是相同的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/209742?site
推荐阅读
相关标签
  

闽ICP备14008679号