2016新编根据两种遍历顺序确定树结构.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2016新编根据两种遍历顺序确定树结构.doc

第六节 根据两种遍历顺序确定树结构 一、由两种顺序确定树结构? ??? 遍历二叉树有三种规则: ??? 前序遍历:根—左子树—右子树; ??? 中序遍历:左子树—根—右子树;? ??? 后序遍历:左子树—右子树—根;? ??? 由于前序遍历的第一个字符和后序遍历的最后一个字符为根,中序遍历中位于根左方的子串和位于根右方的子串分别反映了左子树和右子树的结构,因此二叉树的形态可以由其中序与后序或者前序与中序唯一确定。但无法反映左子树和右子树结构的前序遍历与后序遍历却不能做到这一点,因此这两个遍历顺序可对应多种二叉树的形态。 二、由中序遍历与后序遍历确定前序遍历 ??? 由二叉树的遍历规则可以看出,后序遍历的最后一个字 符为根,中序遍历中位于该字符左侧的子串为左子树中序遍历的结果;中序遍历中位于该字符右侧的子串为右子树中序遍历的结果。 ??? 设 中序遍历s1=s1…sk?…sn ?????? 后序遍历s2=s1……sn ??? 显然,后序遍历中的sn为二叉树的根。按照前序遍历的规则输出sn。在中序遍历中与sn相同的字符为sk。若k1,说明左子树存在,位于sk左侧的子串s1…sk-1为左子树中序遍历的结果,后序遍历中的前缀s1…sk-1为左子树后序遍历的结果;若kn,说明右子树存在,位于sk右侧的子串为右子树中序遍历的结果;后序遍历中的sk…sn-1为右子树后序遍历的结果。按照按照前序遍历的规则分别递归二叉树的左子树和右子树。?   procedure solve1(s1,s2:string);?{ 计算和输出中序遍历s1和后序遍历s2对应的前序遍历} var ? k:integer; begin ? if length(s2)=1???{若当前子树仅剩一个节点,则输出} ???? then write(s2) ???? else begin ?????????? k:=pos(s2[length(s2)],s1);{在中序遍历中寻找子树根} ?????????? write(s1[k]); ?????????? if k1????????????{若左子树存在,则递归遍历左子树} ????????????? then solve1(copy(s1,1,k-1),copy(s2,1,k-1)); ?????????? if klength(s1)???{ 若右子树存在,则递归遍历右子树} ????????????? then solve1(copy(s1,k+1,length(s1)-k),copy(s2,k,length(s2)-k)); ????????? end; end; 三、由中序遍历与前序遍历确定后序遍历 ??? 原理同前,程序略微有些不同,看下面: procedure solve2(s1,s2:string);{计算和输出中序遍历s1和前序遍历s2对应的后序遍历} var ?? k:integer; begin ?? if length(s2)=1???{若当前子树仅剩一个节点,则输出} ????? then write(s2) ????? else begin ??????????? k:=pos(s2[1],s1);??{在中序遍历中寻找子树根} ??????????? if k1????????{若左子树存在,则递归遍历左子树} ?????????????? then solve2(copy(s1,1,k-1),copy(s2,2,k-1)); ??????????? if klength(s1)?{ 若右子树存在,则递归遍历右子树} ??????????? then solve2(copy(s1,k+1,length(s1)-k),copy(s2,k+1,length(s2)-k));? ????????? end; ??? write(s1[k]);{或者输出子树根s2[1]} end; 电力安全月工作总结 [电力安全月工作总结]电力安全月工作总结 2011年3月1日至3月31日为我公司的安全生产月,**变电站围绕;夯实基储提高素质、树立标杆、争创一流;的主题,开展了丰富多彩、形式多样的具体行动:通过看板形式宣传安全第一、预防为主的方针;通过48+4的学习机会,进行安全生产大讨论;通过安全活动进行查找本站的隐患的活动,电力安全月工作总结。形成了;人人学会安全,层层尽责保证安全;的良好氛围,使我站的安全生产工作又上了一个新的台阶。 本站安全生产月活动具体工作如下: 1.开展安全月活动宣传工作,大家坐在一起讨论活动的主题、学习实施纲要、讨论各个实施阶段的活动安排。深刻反思11.3事故,汲取事故教训,每人写了一份11.3事故反思,并对本站的安全管理、记录报表、规章制度、培训工作、事故隐患每个值班员都谈了自

您可能关注的文档

文档评论(0)

czy2014 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档