5个点不同二叉树

来源:百度知道 编辑:UC知道 时间:2024/06/07 21:38:04
有公式可计算
(C上面n,下面2n)*1/(n+1)
所以答案是6
(C上面n,下面2n)是指从2n个里面取n个不相等的组合数

参考<数据结构>清华版,154页
但是听不懂.
可以再清楚些吗

这是一道很经典的题目,这里需要用到一个数列,叫做catalan数,下面是一些关于catalan数的介绍

Catalan数

原理:
令h(1)=1,catalan数满足递归式:
h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)
该递推关系的解为:h(n)=c(2n-2,n-1)/n (n=1,2,3,...)

我并不关心其解是怎么求出来的,我只想知道怎么用catalan数分析问题。
我总结了一下,最典型的三类应用:(实质上却都一样,无非是递归等式的应用,就看你能不能分解问题写出递归式了)
1.括号化问题。

矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种)

2.出栈次序问题。
一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?

3.将多边行划分为三角形问题。
将一个凸多边形区域分成三角形区域的方法数?

除此之外,还可以用来求具有N个结点的树能有多少个形态,但是因为树的根结点是固定的,所以要将N减去1。再用公式就可以求出来了。
不过答案好象不是6啊,是14……