- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用二叉树解决出栈序列问题.pdf
维普资讯
2005镪 赣 南 师 范 学 院 学 报 NQ.6
第六期 JournalofGannanTeachersCollege De12.2005
用二叉树解决出栈序列问题
- 吴集林
(佛山职业技术学院,广东佛山 528000)
摘 要:利用二叉树与栈序列的关系,给出了当入栈序列为ll,2,3,……11}时如何得到所有可能的出栈序列的
方法,并用C++编程实现了这一算法.另外给出了判断一个序列不是入栈序列{1,2,3,……n}的出栈序列的结论,
并用二叉树的方法给出了证明,通过实例验证了以上结论.
关键词:二叉树;出栈序列;前序遍历;中序遍历
中图分类号:TP311.5 文献标识码:A 文章编号:1004—8332(2005)06—0028—03
文献[1]中第92页的一道习题:铁路进行列车调度时,常把站台设计成栈式结构,试问:(1)设有编号为
1,2,3…6的6辆列车,顺序开入栈式结构的站台,问可能出现的出栈序列有多少种?(2)若进站的6辆列车
顺序如上所述,问能否得到435612,3154623的出栈序列.
关于这个问题的解答,文献[2]中第77页只给出了出栈排列的数 目,没有说明理由,也没有给出可能的
出栈排列,而对于一个序列是否是出栈排列,文献 [2]也没有给出通用的方法.本文对这个问题进行了探讨,
利用二叉树与栈序列的关系,给出了当人栈序列为{1,2,3,…… }时如何得到所有可能的出栈序列的方法,
并用 C++编程实现了这一算法.另外给出了判断一个序列不是入栈序列{1,2,3,……n}的出栈序列的结
论,并用二叉树的方法给出了证明,通过实例验证了以上结论.
1 栈与二叉树的关系
由于二叉树的中序遍历要使用栈。由二叉树的前序序列与中序遍历的遍历过程可知,人栈序列和出栈序
列对应于一棵二叉树的前序遍历和中序遍历,因此出栈序列问题也就是一棵二叉树的中序遍历问题 ,因此解
决了二叉树的中序遍历问题也就解决了栈序列问题.
显然对于前序列为{1,2,3,4,…… }的二叉树,每一子树的节点的数值满足这一结论:根结点的数值小
于左子数中任一节点的数值,左子树中任一点的数值小于右子树中任一节点的数值.
引理 1 由给定的前序遍历和中序遍历能唯一确定一棵二叉树.
证明 为证明的方便,设前序遍历为 {1,2,3,4,…… }用数学归纳法证明这一结论.
当 =1时,前序遍历和中序遍历都为 l,得到只有一个根结点 1
的树.
当 =2时,前序遍历为(1,2),当中序遍历为(2,1)时得到图1的
树;当中序遍历为(1,2)时得到图2的树.
设当 三三惫一1时前序遍历和中序遍历唯一确定一棵二叉树,当71
=k时,设前序遍历为(1,2,3,…k),中序遍历为 q1,q2,…q 中序遍
历中必有一个数为 l,其中l为整棵树的根.
当ql=1时二叉树左子树为空,它只有右子树,右子树的前序遍 图l 图2
历为(2,3…k一1),中序遍历为(q2,… ),节点数为k一1,由假设二叉树的右子树是唯一的,所以这棵-y.
树也是唯一确定的.
当 =1时二叉树右子树为空,它只有左子树,左子树的前序遍历为(2,3…k一1),中序遍历为 (q2,…
t 收稿 日期:2005—08—30
作者简介:吴集林(197O一),男,湖南娄底人,广东佛山职业技术学院ilI=师、硕士,主要研究方向为人 神经网络、计算机应用、应片=I数学
维普资讯
第6期 吴集林 用--y.树解决出栈序列问题 29
),节点数为k一1,由假设二叉树的左子树是唯一的,所以这棵二叉树也是唯一确定的.
当qf=1时,左子树的前序遍历为(2,3
文档评论(0)