Problem
求一个含有nnn个节点的二叉树的叶子节点的期望个数。
Data constraint
n≤109n\le 10^9n≤109
Solution
考虑h(n)h(n)h(n)表示有nnn个节点的二叉树个数,f(n)f(n)f(n)表示nnn个节点的二叉树叶子节点个数和,那么所求即为h(x)f(x)\frac{h(x)}{f(x)}f(x)h(x)
然后考虑这两个的生成函数,分别设为H(x),F(x)H(x),F(x)H(x),F(x).
枚举左子树大小iii,然后fff是根据左右子树叶子节点对称,所以有Hn=∑i=0n−1Hi⋅Hn−i−1H_n = \sum_{i=0}^{n-1}H_i \cdot H_{n-i-1}Hn=i=0∑n−1Hi⋅Hn−i−1fn=2∑i=0n−1fi⋅Hn−i−1f_n = 2\sum_{i=0}^{n-1} f_i \cdot H_{n-i-1}fn=2i=0∑n−1fi⋅Hn−i−1
那么可以得出H(x)=xH2(x)+1H(x)=xH^2(x)+1H(x)=xH2(x)+1F(x)=2xH(x)+xF(x)=2xH(x)+xF(x)=2xH(x)+x
解方程得到:
H(x)=1±1−4x2x H(x) = \frac{1 \pm \sqrt{1-4x}}{2x}H(x)=2x1±1−4x
然后对解求极限,发现因为H(0)=1H(0)=1H(0)=1,且
limx→0+1+1−4x2x=+∞\lim_{x \rightarrow 0^+} \frac{1 + \sqrt{1 - 4x}}{2x} = +\inftyx→0+lim2x1+1−4x=+∞limx→0+1−1−4x2x=1\lim_{x \rightarrow 0^+} \frac{1 - \sqrt{1 - 4x}}{2x} = 1x→0+lim2x1−1−4x=1
所以解是H(x)=1−1−4x2xH(x)=\frac{1 - \sqrt{1-4x}}{2x}H(x)=2x1−1−4x,然后可以得出F(x)=x1−4xF(x)=\frac{x}{\sqrt{1-4x}}F(x)=1−4xx.
然后根据广义二项式定理展开1−4x\sqrt{1-4x}1−4x,可以得到1−4x=(1−4x)12=∑i=0∞(12i)(−4x)i\sqrt{1-4x} = \left (1-4x \right )^{\frac{1}{2}} = \sum_{i=0}^{\infty}{\frac{1}{2} \choose i}(-4x)^i1−4x=(1−4x)21=i=0∑∞(i21)(−4x)i
考虑第nnn项系数,那么有:(−4)n(12n)=(−4)n12⋅(12−1)⋅(12−2)⋯(12−n+1)1⋅2⋅3⋯n(-4)^n { \frac{1}{2} \choose n } = (-4)^n \frac{\frac{1}{2}\cdot \left( \frac{1}{2} -1 \right)\cdot \left( \frac{1}{2} -2 \right)\cdots \left( \frac{1}{2} - n + 1 \right)}{1\cdot2\cdot3\cdots n}(−4)n(n21)=(−4)n1⋅2⋅3⋯n21⋅(21−1)⋅(21−2)⋯(21−n+1)
化简得到−12n−1(2nn)-\frac{1}{2n-1}{{2n} \choose n}−2n−11(n2n)
于是带入H(x)H(x)H(x)可以得到,H(x)=1−1−4x2x=1+∑i=0∞12i−1(2ii)xi2x=∑i=1∞12i−1(2ii)xi−12H(x) = \frac{1-\sqrt{1-4x}}{2x}
=\frac{1+\sum_{i=0}^{\infty}\frac{1}{2i-1}{{2i} \choose i} x^i}{2x}
=\frac{\sum_{i=1}^{\infty}\frac{1}{2i-1}{{2i} \choose i} x^{i-1}}{2}H(x)=2x1−1−4x=2x1+∑i=0∞2i−11(i2i)xi=2∑i=1∞2i−11(i2i)xi−1
化简可以得到H(x)=∑i=0∞1n+1(2ii)xiH(x)=\sum_{i=0}^{\infty}\frac{1}{n+1}{{2i} \choose i} x^iH(x)=i=0∑∞n+11(i2i)xi
于是我们得到Catalan数第nnn项为1n+1(2nn)\frac{1}{n+1}\binom{2n}{n}n+11(n2n)
回到原问题,类似的,我们考虑把F(x)F(x)F(x)用广义二项式定理展开,可以得到F(x)=x∑i=0∞(−12i)(−4x)iF(x)=x\sum_{i=0}^{\infty}\binom{-\frac{1}{2}}{i}(-4x)^iF(x)=xi=0∑∞(i−21)(−4x)i
与上面类似,最终可以得到fn=(2n−2n−1)f_n=\binom{2n-2}{n-1}fn=(n−12n−2)
于是所求为h(x)f(x)=n(n+1)2(2n−1)\frac{h(x)}{f(x)}=\frac{n(n+1)}{2(2n-1)}f(x)h(x)=2(2n−1)n(n+1).