


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
首先明确:一颗二叉树的前序遍历=根节点+左子树前序遍历 +右子树前序遍历 一颗二叉树的中序遍历=左子树中序遍历+根节点+右子树中序遍历 那么从前序遍历中取第一个点,就是根节点,知道了根节点,就可以找到中序遍历中跟节点的位置,那么就可以在中序遍历中找到左子树和右子树。首先,我们看看前序、中序、后序遍历的特性:前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树后序遍历: 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点好了,先说说用前序遍历和中序遍历求后序遍历假设前序遍历为 adbgcefh, 中序遍历为 dgbaechf前序遍历是先访问根节点,然后再访问子树的,而中序遍历则先访问左子树再访问根节点那么把前序的 a 取出来,然后查找 a 在中序遍历中的位置就得到 dgb a echf那么我们就知道 dgb 是左子树 echf 是右子树,因为数量要吻合所以前序中相应的 dbg 是左子树 cefh 是右子树然后就变成了一个递归的过程,具体代码如下:C+代码1. #include2. #include3. usingnamespacestd;4. 5. intfind(conststring&str,charc)6. 7. for(inti=0;istr.size();+i)8. if(c=stri)9. returni;10. return-1;11. 12. 13. boolPreMid(conststring&pre,conststring&mid)14. 15. if(pre.size()=0)16. returnfalse;17. if(pre.size()=1)18. 19. coutpre;20. returntrue;21. 22. 23. /根节点是第一个元素24. intk=find(mid,pre0);25. 26. stringpretmp=pre.substr(1,k);27. stringmidtmp=mid.substr(0,k);28. PreMid(pretmp,midtmp);29. 30. pretmp=pre.substr(k+1,pre.size()-k-1);31. midtmp=mid.substr(k+1,mid.size()-k-1);32. PreMid(pretmp,midtmp);33. 34. /变成后序遍历要最后输出节点的值35. coutpremid)42. 43. PreMid(pre,mid);44. coutendl;45. 46. 而已知后序遍历和中序遍历求前序遍历的过程差不多,但由于后序遍历是最后才访问根节点的所以要从后开始搜索,例如上面的例子,后序遍历为 gbdehfca,中序遍历为 dgbaechf后序遍历中的最后一个元素是根节点,a,然后查找中序中a的位置把中序遍历分成 dgb a echf,而因为节点个数要对应后序遍历分为 gbd ehfc a,gbd为左子树,ehfc为右子树,这样又可以递归计算了其他一些附带的代码上面已经有,这里就不重复贴了,具体代码如下:C+代码1. boolBackMid(conststring&back,conststring&mid)2. 3. if(back.size()=0)4. returnfalse;5. 6. if(back.size()=1)7. 8. coutback;9. returntrue;10. 11. 12. /根节点是最后一个元素13. intk=find(mid,backback.size()-1);14. 15. /变成前序遍历要先输出节点的值16. coutbackback.size()-1;17. 18. stringbackTmp=back.substr(0,k);19. stringmidTmp=mid.substr(0,k);20. BackMid(backTmp,midTmp);21. 22. backTmp=back.substr(k,back.size()-k-1);23. midTmp=mid.substr(k+1,mid.size()-k-1);24. BackMid(backTmp,midTmp);25. 在二叉树中后序遍历序列为dabec,中序为debac,那它的前序遍历序列是什么?请大家给出详细的解释?这样理解:先序遍历是:根左右 中序遍历是:左根右 后序遍历是:左右根先序,中序,后序的区别就是遍历根的先后,然后知道它们是递归的就ok了.你看你给的序列,给出了后序遍历,那么我就
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年乾县皖能环保电力有限公司招聘考前自测高频考点模拟试题及参考答案详解
- 2025年泉州市考试录用公务员暨公开遴选公务员集中工作模拟试卷完整答案详解
- 2025年4月四川成都纺织高等专科学校招聘事业编制人员7人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025年宿州高新医院招聘若干人考前自测高频考点模拟试题及答案详解1套
- 2025年安康宁陕县选拔调配工作人员(3人)模拟试卷及完整答案详解1套
- 2025华东师范大学开放教育学院教师发展学院招聘1人(上海)考前自测高频考点模拟试题及一套完整答案详解
- 2025广西凌云县新活力劳务有限责任公司招聘1人考前自测高频考点模拟试题及答案详解参考
- 2025年济宁邹城市事业单位公开招聘工作人员(教育类)(27人)考前自测高频考点模拟试题及答案详解参考
- 2025年嘉兴海盐县医疗卫生事业单位公开招聘编外用工81人考前自测高频考点模拟试题参考答案详解
- 烟台高考历史试卷及答案
- 社会学导论(第五版)孙立平课件
- 2023年高考英语总复习高中英语常用一百组固定搭配
- 诗词大会题库及答案选择题范文
- GB/T 23711.3-2009氟塑料衬里压力容器耐高温试验方法
- CB/T 3686-1995电汽热水柜
- 名著阅读《朝花夕拾 狗猫鼠》课件-部编版语文七年级上册
- 教师粉笔字训练课件
- 园林绿化工国家职业技能标准(2022年版)
- 组织供应能力说明word
- 小学语文人教四年级上册(统编)第四单元-神话故事
- YYT 1244-2014 体外诊断试剂用纯化水
评论
0/150
提交评论