\(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) = \frac{C_{2n}^n}{n + 1}\)
卡特兰特数
问题引入:给定 \(n\) 个 \(0\), \(m\) 个 \(1\),求构成 \(01\)串中满足任意前缀的 \(0\) 的个数不小于 \(1\) 的个数的方案数量。\(n \ge m\)
图形论证:
对于每个 \(路径\) 都可以对应一个 \(方案数\), 问题转化为 求满足求任意时刻 \(向上走的格子数量 \le 向右走的格子数量\), 设当前坐标为 \((x,y)\) 则其应满足 \(x \le y\) 。
求方案数量,\(方案数量 = 能到达(n, m)的方案数 - 不满足约束的个数\)
$能到达(n, m) 的方案数 = C_{n + m}^n $ \((n + m步中挑 n 步向上 或者 m 步向右)\)
对于不满足约束的个数,我们在对称轴上画一条辅助线
将 \((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}\)
上面的点画错了,,,,\((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}\)