题目
解法
首先考虑到算叶子节点数的期望。设 (f_i) 为节点数为 (i) 时叶子节点数的期望,那么这个状态转移显然还需要 (g_i) 为节点数为 (i) 二叉树种类来计算概率。
容易写出 (g) 的转移方程式(就是枚举子树大小,(g_0=1)):
[g_n=sum_{i=0}^n g_ig_{n-i-1}
]
这是卡特兰数的递推式,关于它有几个 结论。
可以写出 (f) 的转移方程式((f_0=0)):
[f_n=sum_{i=0}^{n-1}(f_i+f_{n-i-1}) imes frac{g_i imes g_{n-i-1}}{g_n}
]
需要注意的是,这里递推的 (n) 应该从 (2) 开始,因为大小为 (1) 就是叶子节点了。
容易发现,(i,{n-i-1}) 对应的 (g) 的那一坨是一样的,所以我们可以将 (2 imes(f_i+f_{n-i-1})) 弄成 (2f_i+2f_{n-i-1})。
[=sum_{i=0}^{n-1}2f_i imes frac{g_i imes g_{n-i-1}}{g_n}
]
然后可以得出:
[f_n imes g_n=sum_{i=0}^{n-1}2f_i imes g_i imes g_{n-i-1}
]
我们设 (h_i=f_ig_i),构造 (h_i) 的普通生成函数 (H(x)), (g_i) 的普通生成函数 (G(x))。
类似卡特兰数的封闭形式推导,我们也可以推出 (H(x)) 的封闭形式。
[H(x)=sum_{nge 0}x^nf_ng_n
]
[=0+x+sum_{nge 2}x^nf_ng_n
]
[=x+sum_{nge 2}x^nsum_{i=0}^{n-1}2f_i imes g_i imes g_{n-i-1}
]
[=x+2sum_{nge 2}x^nsum_{i=0}^{n-1}h_i imes g_{n-i-1}
]
[=x+2xH(x)G(x)
]
从而解出
[H(x)=frac{x}{sqrt{1-4x}}
]
如果令 (H'(x)x=H(x)),那么就有 (H'(x)=(1-4x)^{-frac{1}{2}}),我们可以用牛顿二项式定理展开,求得其第 (n) 项系数为 (C(2n,n))。而 (H(x)) 相当于 (H'(x)) 右移一项,其第 (n) 项系数(即 (h_i))为 (C(2n-2,n-1))。
所以 (f_i=frac{n(n+1)}{2(2n-1)})。
代码
这就不用放代码了吧。