设 (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) 个。那么有:
[egin{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)})。