数据结构中Catalan数用格路问题进行转化后的一种证明方法

数据结构中提到了一个n+1个节点的不同的二叉树个数为Catalan数(一般翻译为卡塔兰数或者卡特兰数),一般的教材并未给出证明。

如果那一本目前能找到的组合数学教材(比如卢开澄的组合数学)一般均给出了证明,但证明一般都较为复杂

 

实际上Catalan数是可以用格路问题来求解,国外教材上一般均有类似介绍,我这里简单写一下。

 

限于博客篇幅,期间证明节略,只给出主要结论:

(1)任何一种二叉树的形态都有且仅有一种深入优先搜索方式进行搜索,不可能出现一种深入优先搜索方式的搜索序列用于两种不同形态的树。

(2)如果把深入优先搜索的搜索和回朔看做是1和0的操作,而一次n+1个节点的深入优先搜索的1的个数=0的个数=n=总边数。

(3)每一种深入优先搜索的方式都对应一个求解(0,0)到(n,n)的不越过对角线的格路(任何时候回朔的次数总不会比搜索的次数多)。如下图:

 

 

 

搜索这里用红色表示,回朔用绿色表示,可见红色和绿色总是次序增加,且绿色总是比红色的同批次标号大,这是Catalan数的一个重要特点。

 

因此:Cn+1(n+1个节点的不同二叉树个数:catalan数) = C(2n,n)-C(2n,n-1)=C(2n,n)/n+1

即(0,0)->(n,n)的格路数C(2n,n)

减去

(-1,1)->(n,n)的格路数C(2n,n-1)【(-1,1)是(0,0)关于y=x+1的对称点,从-1,1出发到n,n的路径都可以反向对应一条0,0到n,n的通过y=x的违规格路】

极为所求。

 

(a,b)->(c,d)的格路数为C(c+d-a-b,c-a)不证明,一般组合数学教材均有详细介绍。

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值