[TJOI2015] 概率论 题解

\(cnt_T\) 表示二叉树 \(T\) 的叶子节点个数,\(f_n\) 表示有 \(n\) 个节点的二叉树个数,于是有:

\[E(cnt_T)=\sum_{|V(T)|=n}cnt_T\frac1{f_n} \]

\(g_n=\sum_{|V(T)=n|}cnt_T\),答案为 \(\frac{g_n}{f_n}\)

\(f_n\),可以枚举左右子树的节点个数,有:

\[f_n=\sum_{i=1}^nf_{i-1}f_{n-i} \]

发现与卡特兰数的递推式相同。由卡特兰数通项公式得:

\[f_n=\frac{2n\choose n}{n-1} \]

考虑如何求 \(g_n\)。这里给出结论:\(g_n=nf_{n-1}\),证明如下:

对于每一棵有 \(n\) 个节点的二叉树 \(T\),由于去掉它的任何一个叶子节点都能让它变成一棵有 \(n-1\) 个节点的二叉树 \(T'\),因此,数每棵 \(T\) 有多少个叶子节点,可以转化为数每棵 \(T'\) 有多少个位置能添加节点。

这里证明一下关于二叉树的两条性质。

令叶子节点数为 \(V_0\),有一个儿子的节点数为 \(V_1\),有两个儿子的节点数为 \(V_2\)

  • 二叉树中,\(V_0=V_2+1\)

对于 \(1\) 个节点的树,这是显然的。

考虑向一棵二叉树上添加节点得到新树。

如果在 \(V_0\) 下添加节点,那么 \(V_0\)\(V_2\) 都不变;

如果在 \(V_1\) 下添加节点,那么 \(V_0\)\(V_2\)\(+1\)

因此 \(V_0\)\(V_2\) 的差始终为 \(1\)

  • 一棵有 \(n\) 个节点的二叉树,有 \(n+1\) 个位置能添加节点。

每个 \(V_0\) 下能添加两个节点,每个 \(V_1\) 下能添加一个节点,故共有 \(2V_0+V_1\) 个位置能添加节点。

由性质 \(1\) 可知,\(V_0=V_2+1\),又因为 \(V_0+V_1+V_2=n\),可解出 \(2V_0+V_1=n+1\)

因此有 \(n+1\) 个位置能添加节点。

由性质 \(2\) 即可推出,\(g_n=nf_{n-1}\)

\(f_n,g_n\) 代入前面的式子,推导后可得答案为:

\[\frac{n(n+1)}{2(2n+1)} \]

posted @ 2025-09-08 15:32  整齐的艾萨克  阅读(7)  评论(0)    收藏  举报