LeetCode如何解决不同的二叉搜索树问题

这篇文章主要为大家展示了“LeetCode如何解决不同的二叉搜索树问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“LeetCode如何解决不同的二叉搜索树问题”这篇文章吧。

创新互联公司专业为企业提供大安网站建设、大安做网站、大安网站设计、大安网站制作等企业网站建设、网页设计与制作、大安企业网站模板建站服务,10多年大安做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。


 

题目描述

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

示例:

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

解题方案

 

思路

  • 标签:动态规划

  • 假设n个节点存在二叉排序树的个数是G(n),令f(i)为以i为根的二叉搜索树的个数,则

LeetCode如何解决不同的二叉搜索树问题

  • 当i为根节点时,其左子树节点个数为i-1个,右子树节点为n-i,则

LeetCode如何解决不同的二叉搜索树问题

  • 综合两个公式可以得到卡特兰数[1]公式

LeetCode如何解决不同的二叉搜索树问题

LeetCode如何解决不同的二叉搜索树问题  
算法动图
 

代码

class Solution {    public int numTrees(int n) {        int[] dp = new int[n+1];        dp[0] = 1;        dp[1] = 1;                for(int i = 2; i < n + 1; i++)            for(int j = 1; j < i + 1; j++)                 dp[i] += dp[j-1] * dp[i-j];                return dp[n];    }}

以上是“LeetCode如何解决不同的二叉搜索树问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!

网站名称:LeetCode如何解决不同的二叉搜索树问题
本文来源:https://www.cdcxhl.com/article48/pgepep.html

成都网站建设公司_创新互联,为您提供网站排名响应式网站网站内链云服务器品牌网站制作移动网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设