二叉树形态数推导 (Catalan 数)

问题:计算具有 n 个不同节点的不同形态二叉树数目(节点不可区分,只考虑拓扑结构)。

推导过程
  1. 定义:

    • 设 ( C_n ) 表示 n 个节点的二叉树形态数
    • 基础情况:
      • ( C_0 = 1 )(空树)
      • ( C_1 = 1 )(单节点)
  2. 递推关系(根节点 + 左子树 + 右子树):

    • 根节点占用 1 个节点
    • 剩余 n-1 个节点分配给左子树(i 个节点)和右子树(n-1-i 个节点)
    • 递推公式:
      [
      C_n = \sum_{i=0}^{n-1} C_i \times C_{n-1-i}
      ]
  3. 闭式解(Catalan 数):
    [
    C_n = \frac{1}{n+1} \binom{2n}{n} = \frac{(2n)!}{(n+1)! , n!}
    ]

示例
n形态数二叉树示例
01∅
11●
22● ●
/ \
● ●
35见下图
n=3 的 5 种形态:
  ●       ●       ●       ●       ●
  /       /       / \       \       \
 ●       ●       ●   ●       ●       ●
  \       \               /       \
   ●       ●             ●         ●

K 叉树形态数推导 (Fuss-Catalan 数)

问题:推广到 k 叉树(每个节点最多 k 个子树)。

推导过程
  1. 定义:

    • 设 ( C^{(k)}_n ) 表示 n 个节点的 k 叉树形态数
    • 基础情况:
      • ( C^{(k)}_0 = 1 )
      • ( C^{(k)}_1 = 1 )
  2. 递推关系(根节点 + k 棵子树):

    • 根节点占用 1 个节点
    • 剩余 n-1 个节点分配给 k 棵子树(每棵子树节点数非负整数)
    • 递推公式:
      [
      C^{(k)}n = \sum{\substack{i_1 + \dots + i_k = n-1 \ i_j \geq 0}} \prod_{j=1}^k C^{(k)}_{i_j}
      ]
  3. 闭式解(Fuss-Catalan 数):
    [
    C^{(k)}_n = \frac{1}{(k-1)n + 1} \binom{kn}{n}
    ]

特例验证
k名称n=0n=1n=2n=3公式
2二叉树1125(\frac{1}{n+1} \binom{2n}{n})
3三叉树11312(\frac{1}{2n+1} \binom{3n}{n})
4四叉树11422(\frac{1}{3n+1} \binom{4n}{n})
n=2 的三叉树形态(3 种):
  ●         ●         ●
  │         │         │
  ●         ●         ●
  │        / \        │
  ●      ●   ●      ●

任意树形态数推导 (有序树 vs 无序树)

问题:n 个节点的不同树形态数目(子树数量任意)。

情况 1:有序树 (Ordered Tree)

子树顺序敏感(如 XML 结构)。

  1. 递推关系:

    • 根节点占用 1 个节点
    • 剩余 n-1 个节点分配给子树序列(子树可为空)
    • 生成函数方程:
      [
      G(x) = x \cdot \frac{1}{1 - G(x)}
      ]
  2. 闭式解(Catalan 数平移):
    [
    \text{形态数} = C_{n-1} = \frac{1}{n} \binom{2n-2}{n-1}
    ]

情况 2:无序树 (Unordered Tree)

子树顺序不敏感(需考虑对称性)。

  1. Pólya 计数理论:

    • 设 ( T(x) ) 为生成函数
    • 考虑子树对称群 ( S_m )(m 棵子树)
    • 方程:
      [
      T(x) = x \cdot \exp\left( \sum_{k=1}^\infty \frac{T(x^k)}{k} \right)
      ]
  2. 解的特点:

    • 无显式闭式解
    • 前几项(n=0 到 4):
      [
      1,\ 1,\ 1,\ 2,\ 3,\ \dots
      ]
形态数对比
n有序树无序树差异原因
011空树
111单节点
211只有 1 种可能结构
321有序树区分子树位置
452无序树合并对称结构
5143对称性减少计数
n=4 的无序树形态(2 种):
  ●            ●
  ├─┬─┐        ├─┐
  ● ● ●        ● ●
               │
               ●

总结

  1. 二叉树:
    [
    C_n = \frac{1}{n+1} \binom{2n}{n}
    ]

  2. K 叉树:
    [
    C^{(k)}_n = \frac{1}{(k-1)n + 1} \binom{kn}{n}
    ]

  3. 任意树:

    • 有序树:( \dfrac{1}{n} \binom{2n-2}{n-1} )
    • 无序树:无闭式解,使用 Pólya 计数或 Otter 公式

关键洞察:

  • 二叉树和 k 叉树的形态数本质是 Fuss-Catalan 数
  • 有序树形态数是 Catalan 数的平移
  • 无序树需用 群论 处理对称性
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐