[leetcode] 96. 不同的二叉搜索树 +[补充] 不同的二叉树,不同形态的二叉树的个数----catalan数
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)
= 第n
个Catalan
数,countBT(n) = countBST(n)*n!
,countBT(n)
是n
个不同key
的值能组成不同二叉树的个数(注意:不是不同形态的二叉树的总数)
[leetcode] 96. 不同的二叉搜索树 +[补充] 不同的二叉树,不同形态的二叉树的个数----catalan数相关推荐
- Leetcode 96. 不同的二叉搜索树
Leetcode 96. 不同的二叉搜索树 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/unique-binary- ...
- LeetCode 96不同的二叉搜索树95不同的二叉搜索树Ⅱ
微信搜一搜:bigsai 算法文章题解全部收录在github仓库bigsai-algorithm 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 92反转链表Ⅱ&93复 ...
- leetcode - 96. 不同的二叉搜索树
96. 不同的二叉搜索树 ------------------------------------------ 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 ...
- LeetCode 96. 不同的二叉搜索树(DP)
1. 题目 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例:输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / ...
- Leetcode 96. 不同的二叉搜索树 解题思路及C++实现
解题思路: 因为二叉搜索树的左右子树均为二叉搜索树.输入整数n,求其所有二叉搜索树的总数,就是求根节点分别为1,2, ..., n的二叉搜索树的总和. 假设 i 的二叉搜索树的总数为 f(i),当根节 ...
- LeetCode 96. 不同的二叉搜索树(Unique Binary Search Trees )
题目描述 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ ...
- leetcode 96. 不同的二叉搜索树(Unique Binary Search Trees)
目录 题目描述: 示例: 解法: 题目描述: 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结 ...
- LeetCode 96——不同的二叉搜索树
1. 题目 2. 解答 以 \(1, 2, \cdots, n\) 构建二叉搜索树,其中,任意数字都可以作为根节点来构建二叉搜索树.当我们将某一个数字作为根节点后,其左边数据将构建为左子树,右边数据将 ...
- LeetCode 96.不同的二叉搜索树(卡特兰数)
题目描述 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ ...
最新文章
- Python 获取字符串的第一位和最后一位的字符
- mysql手动写的时间_Mysql日期和时间函数
- 【Linux】一步一步学Linux——make命令(259)
- Java认证授权框架Spring Security介绍
- python异步实现方式_Python通过yield实现异步
- react 给一个引用的组件添加新属性_高阶组件在React中的应用
- 【转】基于XML-RPC的BloggerAPI学习
- android 设置setmultichoiceitems设置初始化勾选_Linux内核启动:虚拟盘空间设置和内存管理结构初始化...
- 大咖布道丨证券行业规模化敏捷和核心能力演进
- pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
- linux下搭建DNS子域及相关授权详解
- C++进阶教程之命名空间
- ASP.NET 控件与可访问
- 关于: 为什么要写注释----谈一下个人体会
- 批处理变量输出时提示“ECHO处于关闭状态”
- 新浪微博批量删除微博方法
- Android Studio连接MySQL:问题解决:虚拟机无法连接本地SQL,coon总为空
- WindowsCluster 由于在更新安全DNS区域时访问被拒绝,群集网络资源无法注册一个或多个关联的DNS名称
- IDEA download sources 报Cannot reconnect错误解决方法
- Android OpenGL ES 3.0 粒子特效
热门文章
- python基础30个常用代码-30个Python常用极简代码,拿走就用
- python表白代码-python浪漫表白源码
- python是干什么用的-使用Python究竟可以做什么?下面是Python的3个主要应用
- python是什么意思中文、好学吗-Python的前景和Python好不好学呢?
- win10语音识别的设置和开启
- 创业冲突的五种解决方法是_当创始合伙人发生冲突时,最好的解决方法4和5
- swagger python自动化用例_自动生成robot自动化测试用例
- python周期函数的拟合_Python可以拟合函数(数学意义)吗?
- 高职考计算机基础知识,高职计算机基础及应用教程
- vue制作echart图表随着画面等比例放大缩小