题解「TJOI2015 概率论」
设 \(g_n\) 为 \(n\) 个节点的二叉树所有情况下的叶子节点数和,\(f_n\) 为 \(n\) 个节点的二叉树的本质不同方案数。则我们断言 \(g_n=nf_{n-1}\)。
试图证明这一结论。
对于一棵有 \(a\) 个叶子节点的二叉树,分别删去 \(a\) 个叶子节点,可以得到 \(a\) 棵不同的 \(n-1\) 个节点的二叉树。我们标记这些 \(n-1\) 个节点的二叉树,则最终 \(g_n\) 的值就为所有 \(n-1\) 个节点的二叉树被标记的次数。
现在我们需要证明,任意一棵 \(n-1\) 个节点的二叉树,都会被标记 \(n\) 次。设只有 \(1\) 个儿子节点的点有 \(b\) 个,有 \(2\) 个儿子节点的点有 \(c\) 个。那么有:
\[\begin{cases}
b+2c=n-1
\\
a+b+c=n
\end{cases}
\]
可以解得 \(2a+b=n+1\)。想一想,\(a\) 个叶子节点每个点可以接 \(2\) 个叶子,\(b\) 个只有一个儿子节点的点可以接 \(1\) 个叶子,也就是说:一棵 \(n\) 个点的树有 \(n+1\) 个不同的位置可以接叶子。换言之,任意一棵 \(n-1\) 个点的二叉树,都一定会被标记 \(n\) 次。
那么 \(f_n\) 怎么求呢?枚举左子树节点数,有:
\[f_n=\sum_{i=0}^{n-1}f_if_{n-i-1}
\]
这不就是 \(Cat_n\) 么,直接通项求就好了。
最终答案 \(ans=\frac{nf_{n-1}}{f_n}=\frac{n(n+1)}{2(2n-1)}\)。