96. 不同的二叉搜索树

  1. 不同的二叉搜索树
image.png

思路:(https://www.jianshu.com/p/1186cf3a3ab4)
  设f(n) = 节点个数为n组成的二叉搜索数种数
  假定根节点为k,比k小的值都存在与k树的左子树,此处组成的左子树情况有 f(k-1)种,而比k大的值都存在与右子树,因此有f(n-k)种
  由于左右子树的情况是相互独立的,因此根节点为k的二叉搜索树总共有f(n-k)*f(k-1)种
  则f(n)的问题就等价于--k从1到n的所有组成二叉搜索树种类之和:f(n) = f(0)f(n-1)+f(1)f(n-2)+……+f(n-1)f(0)
  最后,令f(0) = 1.f(1)=1
  卡特兰数的递推式,答案不言而喻,即为f(n)=h(n)= C(2n,n)/(n+1)= c(2n,n)-c(2n,n-1)(n=0,1,2,……)。

int numTrees(int n) {
    //卡特兰数,C(2n,n)/(n+1)
    long long ans=1;
    int i;
    for(i=1;i<=n;++i)
        ans=ans*(i+n)/i;
    ans/=i;
    return (int)ans;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 描述:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例: 输入: 3输出: 5解释:给...
    大数据Zone阅读 1,684评论 0 3
  • 题目给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3输出: 5解释:给...
    HITZGD阅读 443评论 0 0
  • 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 代码
    vbuer阅读 155评论 0 0
  • 将mysql默认字符编码修改为UTF8 修改数据库mysql字符编码为UTF8 Mysql数据库是一个开源的数据库...
    米酒真香阅读 889评论 0 48
  • 药店的称可真不是一般的重~78㎏的数字也真的是得哭一阵子了,下周就要回去了,带着我对故乡的依恋还有这长上去的体重,...
    pnelly阅读 470评论 0 49

友情链接更多精彩内容