leetcode96. 不同的二叉搜索树 动归vs数学?

举报
兔老大 发表于 2021/04/22 23:52:33 2021/04/22
【摘要】 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树:    1         3     3      2      1     \       /     /      / \      \      3     2     1      1   3...

给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?

示例:

输入: 3
输出: 5
解释:
给定 n = 3, 一共有 5 种不同结构的二叉搜索树:

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

思路:dp[n]代表答案,则dp[n]=

左子树1节点,右子树n-1节点

左子树2节点,右子树n-2节点

................................

左子树n-1节点,右子树1节点

所有情况加起来。


  
  1. public class Solution {
  2. public int numTrees(int n) {
  3. int[] dp = new int[n + 1];
  4. dp[0] = 1;
  5. dp[1] = 1;
  6. for (int i = 2; i <= n; ++i) {
  7. for (int j = 1; j <= i; ++j) {
  8. dp[i] += dp[j - 1] * dp[i - j];
  9. }
  10. }
  11. return dp[n];
  12. }
  13. }

官方有一个数学,太强了。

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/104085228

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。