• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
jacklee404
Never Stop!
博客园    首页    新随笔    联系   管理    订阅  订阅
卡特兰特数

\(n\) 个结点的 二叉树, 有多少种形态?

设 \(h(n)\) 表示具有 \(n\) 个结点的二叉树的形态数。

当 \(n = 0\) 时,\(h(0) = 1\) 。

当 \(n = 1\) 时,\(h(1) = 1\)。

当 \(n = 2\) 时,\(h(2) = 2\)。

当 \(n = 3\) 时,固定根结点, 左右子树的节点数目按 有序对 可以分为 \((0, 2), (2, 0), (1, 1)\),则 \(h(3) = h(0)h(2) + h(2)h(0) + h(1)h(1) = 4\)

当 \(n = 4\) 时,固定根节点,左右子树的结点数目按 有序对 可以分为 \((0, 4), (4, 0), (1, 3), (3, 1), (2, 2)\), 则 \(h(4) = h(0)h(4) + h(4)h(0) + h(1)h(3) + h(3)h(1) + h(2)h(2)\)

\(\cdots\)

\(\cdots\)

\(\cdots\)

可以推出

\[h_n = \begin{cases} \sum_{i=1}^{n} h_{i-1} h_{n-i} & n \geq 2, n \in \mathbf{N_{+}}\\ 1 & n = 0, 1 \end{cases} \]

满足卡特兰特数的定义, 故

\(h(n) = \frac{C_{2n}^n}{n + 1}\)

卡特兰特数

​ 问题引入:给定 \(n\) 个 \(0\), \(m\) 个 \(1\),求构成 \(01\)串中满足任意前缀的 \(0\) 的个数不小于 \(1\) 的个数的方案数量。\(n \ge m\)

图形论证:

image-20230817161617524

对于每个 \(路径\) 都可以对应一个 \(方案数\), 问题转化为 求满足求任意时刻 \(向上走的格子数量 \le 向右走的格子数量\), 设当前坐标为 \((x,y)\) 则其应满足 \(x \le y\) 。

求方案数量,\(方案数量 = 能到达(n, m)的方案数 - 不满足约束的个数\)

$能到达(n, m) 的方案数 = C_{n + m}^n $ \((n + m步中挑 n 步向上 或者 m 步向右)\)

对于不满足约束的个数,我们在对称轴上画一条辅助线

image-20230817161603533

将 \((n, m)\) 坐标 与 \(y = x + 1\) 作对称 得到对称点 \((m - 1, n + 1)\).

首先,任意\(x > y\) 的点, 都需要经过 \(y = x + 1\), 对于不满足约束的路径我们对其经过绿颜色的点的部分,沿着 \(y = x + 1\) 作对称,那么

对于任意可以到达\((m - 1, n + 1)\) 的点都可以通过对称 到另一个到达 \((n, m)\) 的路径, 所以不满足的方案数量即为 到达 点 \((m - 1, n + 1)\) 的方案数,

即为\(C_{n + m}^{m - 1}\)

image-20230817163231948

上面的点画错了,,,,\((n,m)\)这种情况应该是无解的。

所以最终的方案数为

\(C_{n + m}^m - C_{n + m}^{m - 1}\)

特别的 \(n = m\) 为卡特兰数量

\(C_{2n}^n - C_{2n}^{n - 1} = \frac{C_{2n}^n}{n + 1}\)

posted on 2023-08-18 13:22  Jack404  阅读(63)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3