2105年408真题-数据结构:先序序列a,b,c,d的不同二叉树个数

2015统考真题】先序序列a,b,c,d的不同二叉树个数是()

A.13                  B.14                  C.15                  D.16

解决思路:

已知,前序序列和中序序列可以唯一地确定一棵二叉树。如果我们把前序序列看作为入栈次序,
把中序序列看作为出栈次序,那么题意相当于“以序列 a,b,c,d 为入栈次序,则出栈序列的个数为?”
C(8,4)/5=8765/(4321*5)=14

考点知识储备:卡特兰数(Catalan number)

一、引言

卡特兰数(Catalan number)是 组合数学 中一个常出现在各种 计数问题 中的 数列。

二、经典问题

进出栈序列

这是一道 最经典 的入门级卡特兰数题目,如果能把这题看懂,相信后面的题目也能迎刃而解。
题目描述
n 个元素进栈序列为:1,2,3,4,…,n,则有多少种出栈序列。

思路

我们将进栈表示为 +1,出栈表示为 -1,则 1 3 2 的出栈序列可以表示为:+1 -1 +1 +1 -1 -1。
在这里插入图片描述

  1. 根据栈本身的特点,每次出栈的时候,必定之前有元素入栈,即对于每个 -1 前面都有一个 +1 相对应。因此,出栈序列的 所有前缀和 必然大于等于 0,并且 +1 的数量 等于 -1 的数量。

  2. 接下来让我们观察一下 n = 3 的一种出栈序列:+1 -1 -1 +1 -1 +1。序列前三项和小于 0,显然这是个非法的序列。

  3. 如果将 第一个 前缀和小于 0 的前缀,即前三项元素都进行取反,就会得到:-1 +1 +1 +1 -1 +1。此时有 3 + 1 个 +1 以及 3 - 1 个 -1。

  4. 因为这个小于 0 的前缀和必然是 -1,且 -1 比 +1 多一个,取反后,-1 比 +1 少一个,则 +1 变为 n + 1 个,且 -1 变为 n - 1 个。进一步推广,对于 n 元素的每种非法出栈序列,都会对应一个含有 n + 1 个 +1 以及 n - 1个 -1 的序列。

证明这两种序列是一一对应的?

假设非法序列为 A,对应的序列为 B。从前往后遍历最早发现前缀串非法序列,每个 A 只有一个"第一个前缀和小于 0 的前缀",所以每个 A 只能产生一个 B。而每个 B 想要还原到 A,就需要找到"第一个前缀和大于 0 的前缀",显然 B 也只能产生一个 A。
在这里插入图片描述

每个 B 都有 n + 1 个 +1 以及 n - 1 个 -1,因此 B 的数量为

计算

C(2n,n)=A(2n,n)/n!=(2n!)/(n!n!) —1
C(2n,n+1)=A(2n,n+1)/(n+1)!=(2n)!/[(n+1)n! (n-1)!*n/n]—2
1式-2式:
c(2n,n)[ 1- n/n+1 ]=C(2n,n)/n+1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值