【洛谷】P3978 [TJOI2015]概率论
题意:
随机生成一个有 \(n\) 个节点的二叉树,所有互相不同构的形态等概率出现。求叶子节点的期望数。
\(1 \leq n \leq 10^9\)。
思路:
设 \(f_i\) 为大小为 \(i\) 的二叉树的个数。根据经典结论,这是一个卡特兰数,即 \(f_i=\dfrac{\binom{2n}{n}}{n+1}\)。
设 \(g_i\) 为大小为 \(i\) 的二叉树的叶子节点数之和。
-
对于一棵 \(n\) 个点的二叉树,假设它有 \(a\) 个叶子节点,\(b\) 个只有一个子节点的节点,\(c\) 个有两个子节点的节点。那么就有 \(a+b+c=n\),而由于所有节点一共有 \(n-1\) 个父亲,于是有 \(b+2c=n-1\),而一共有 \(2a+b=n+1\) 个地方可以悬挂新的叶子节点。
-
因此,每一棵 \(n-1\) 个节点的二叉树对 \(g_{n}\) 就贡献了 \(n\) 次,那么也就可以得到 \(g_n=f_{n-1}*n\)。
于是,最终的答案就是:
\[\dfrac{g_n}{f_n}=\dfrac{n(n+1)}{2(2n-1)}
\]