leetcode官方的题解:https://leetcode-cn.com/problems/unique-binary-search-trees/solution/bu-tong-de-er-cha-sou-suo-shu-by-leetcode/(写的真好)



class Solution {public:int numTrees(int n) {if(n < 1) return 1;vector<int>G(n+1,0);G[0] = 1;G[1] = 1;for(int i = 2; i <= n; i++){for(int j = 1; j <= i; j++){G[i] += G[j-1]*G[i-j];}}return G[n];}
};


class Solution {public:int numTrees(int n) {typedef long long ll;ll C = 1;  // C_0  = 1for(int i = 0; i < n; i++){// C_1 = C_(n+1) ⇒ n = 0 ,故 从0开始C = C*(2*(2*i + 1))/(i+2);  }return C;}
};

===================================================================

补充:

catalan数:https://en.wikipedia.org/wiki/Catalan_number



因为一开始看到那个Catanlan数的时候,感到有点奇怪,我记得这个公式是算不同的二叉树的个数的,后面才发现这个公式也是算不同形态的二叉树的个数的,也就是说二叉树一种形态对应一颗二叉搜索树。
比如: 给你3个数(1、2、3?),这个形态的二叉树是不是只有唯一的二叉搜索树。

结论:

同一形态可以有n!颗不同的二叉树,即:countBST(n)= 第nCatalan数,countBT(n) = countBST(n)*n!countBT(n)n个不同key的值能组成不同二叉树的个数(注意:不是不同形态的二叉树的总数)

[leetcode] 96. 不同的二叉搜索树 +[补充] 不同的二叉树,不同形态的二叉树的个数----catalan数相关推荐

  1. Leetcode 96. 不同的二叉搜索树

    Leetcode 96. 不同的二叉搜索树 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/unique-binary- ...

  2. LeetCode 96不同的二叉搜索树95不同的二叉搜索树Ⅱ

    微信搜一搜:bigsai 算法文章题解全部收录在github仓库bigsai-algorithm 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 92反转链表Ⅱ&93复 ...

  3. leetcode - 96. 不同的二叉搜索树

    96. 不同的二叉搜索树 ------------------------------------------ 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 ...

  4. LeetCode 96. 不同的二叉搜索树(DP)

    1. 题目 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例:输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / ...

  5. Leetcode 96. 不同的二叉搜索树 解题思路及C++实现

    解题思路: 因为二叉搜索树的左右子树均为二叉搜索树.输入整数n,求其所有二叉搜索树的总数,就是求根节点分别为1,2, ..., n的二叉搜索树的总和. 假设 i 的二叉搜索树的总数为 f(i),当根节 ...

  6. LeetCode 96. 不同的二叉搜索树(Unique Binary Search Trees )

    题目描述 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ ...

  7. leetcode 96. 不同的二叉搜索树(Unique Binary Search Trees)

    目录 题目描述: 示例: 解法: 题目描述: 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结 ...

  8. LeetCode 96——不同的二叉搜索树

    1. 题目 2. 解答 以 \(1, 2, \cdots, n\) 构建二叉搜索树,其中,任意数字都可以作为根节点来构建二叉搜索树.当我们将某一个数字作为根节点后,其左边数据将构建为左子树,右边数据将 ...

  9. LeetCode 96.不同的二叉搜索树(卡特兰数)

    题目描述 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ ...

最新文章

  1. Python 获取字符串的第一位和最后一位的字符
  2. mysql手动写的时间_Mysql日期和时间函数
  3. 【Linux】一步一步学Linux——make命令(259)
  4. Java认证授权框架Spring Security介绍
  5. python异步实现方式_Python通过yield实现异步
  6. react 给一个引用的组件添加新属性_高阶组件在React中的应用
  7. 【转】基于XML-RPC的BloggerAPI学习
  8. android 设置setmultichoiceitems设置初始化勾选_Linux内核启动:虚拟盘空间设置和内存管理结构初始化...
  9. 大咖布道丨证券行业规模化敏捷和核心能力演进
  10. pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
  11. linux下搭建DNS子域及相关授权详解
  12. C++进阶教程之命名空间
  13. ASP.NET 控件与可访问
  14. 关于: 为什么要写注释----谈一下个人体会
  15. 批处理变量输出时提示“ECHO处于关闭状态”
  16. 新浪微博批量删除微博方法
  17. Android Studio连接MySQL:问题解决:虚拟机无法连接本地SQL,coon总为空
  18. WindowsCluster 由于在更新安全DNS区域时访问被拒绝,群集网络资源无法注册一个或多个关联的DNS名称
  19. IDEA download sources 报Cannot reconnect错误解决方法
  20. Android OpenGL ES 3.0 粒子特效

热门文章

  1. python基础30个常用代码-30个Python常用极简代码,拿走就用
  2. python表白代码-python浪漫表白源码
  3. python是干什么用的-使用Python究竟可以做什么?下面是Python的3个主要应用
  4. python是什么意思中文、好学吗-Python的前景和Python好不好学呢?
  5. win10语音识别的设置和开启
  6. 创业冲突的五种解决方法是_当创始合伙人发生冲突时,最好的解决方法4和5
  7. swagger python自动化用例_自动生成robot自动化测试用例
  8. python周期函数的拟合_Python可以拟合函数(数学意义)吗?
  9. 高职考计算机基础知识,高职计算机基础及应用教程
  10. vue制作echart图表随着画面等比例放大缩小