定义
卡特兰数是一个数列
通项公式为
卡塔兰数有三种计算方式
应用场景: 栈混洗 n 个括号能构成的合法表达式 个节点的二叉树形态 个互异节点的 种类 个叶节点的真二叉树种类(度要么为0,要么为2)
| 场景 | 答案 |
|---|---|
| n 对括号合法表达式 | |
| n 个节点的二叉树形态 | |
| n 个互异节点的 BST | |
| n 个叶节点的真二叉树 | |
| 栈混洗(n 个元素) | |
栈混洗
对于给定数值为 的一个数列,求其出栈顺序?
求解步骤:
- 确定 操作步骤数
- 根据 不同步骤 进行排列组合
- 得出答案
具体求解
分析
给定的 个数,从入栈到出栈,一定有且仅有 次操作,故共有 种可能,但是
其中含有不合法的可能。
计算不合法的可能个数 需要利用 折线原理 进行几何分析
在折线图中只有 右上 和 右下 两个操作,对应的就是 入栈和出栈。

如图所示,当折线达到 ,则该折线一定代表违法操作。
-
随意假设第 个操作时折线刚好到达 ,设该点为 , 终点为 ;
-
又因为 从 到 的折线数,由于对称,在图中可以改为由 到 的折线数。
-
再回到全局中去看,因为从原点 到点 是一定经过 这条线的,故不用管 的位置
-
因此,求解 违法操作数 等价于 求从原点 到 点 的 所有折线数:
-
最后可以计算出:一个 位序列,从入栈到出栈,具有 中可能
视频解析

好题,非常适合用 折线定理