根据两种二叉树遍历方式,求二叉树方法
2018-05-30 19:56
357 查看
如何根据已知两种遍历的序列,求原始的二叉树?
并不是已知道任意两个序列都可以还原二叉树,只有知道先序中序以及中序和后序两种类型的遍历顺序才能还原二叉树。只知道先序和后序是还原不了原始的二叉树的。
(1)已知道先序和中序遍历,还原二叉树。
已知道二叉树的先序遍历为ABCDEFGH,中序遍历为BDCEAFHG,求后序遍历。
先序(根,左,右) 中序(左,根,右)
①根据先序遍历可以知道根节点为A。
②根据中序遍历可以知道BDCE是二叉树的左子树。FHG是右子树。左子树BDCE,在先序遍历可以看出B先出现,为根节点,在根据中序遍历可以知道左子树没有左子树,DCE为B的右子树,根据先序遍历,C先出现为根节点。D为左子树,E为右子树。
③FHG是右子树。先序遍历中F先出现,为根节点,说明右子树没有左子树。HG为右子树,先序遍历中G先出现,为根节点,H为G的左子树,所以二叉树为
后序遍后序历为:D-E-C-B-H-G-F-A
(2)已知道中序和后序遍历,求二叉树先序遍历。 已知中序BDCEAFHG,后序DECBHGFA,求先序遍历。①由后序遍历可知道根节点为A②再根据中序遍历可以知道,左子树为BDCE。根据后序遍历后出现的是根节点,所以B为根节点,所以左子树没有左子树,右子树为DCE ,后序遍历中C后出现为根,所以C的左子树为D,右子树为E。③右子树为FHG,后序遍历F后出现为根节点,F的右子树为HG,后序遍历中G先出现为根节点,H为G的左子树。所以此二叉树即为上图的二叉树:所以先序为A-B-C-D-E-F-G-H
阅读更多
相关文章推荐
- 根据图片高度动态改变ViewPager高度方法的两种方式对比: PageTransformer& OnPageChangeListener
- 二叉树三种遍历方法(根据两种排序求第三种的顺序)
- C:C语言前序创建二叉树的两种方式和前序遍历二叉树的方法
- 根据前序和中序数组构造二叉树(递归方法)
- Android提交数据到服务器的两种方式四种方法
- 使用POST方式弹出窗口的两种方法示例介绍
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- 通过Ajax两种方式讲解Struts2接收数组表单的方法
- Android创建桌面快捷方式两种方法
- C#两种创建快捷方式的方法
- ASP.Net 跨页面传值 通过Previous.FindControl方法(两种方式)
- 根据二叉树的两种遍历求二叉树的结构
- 数据库同步的两种方式(发布、订阅使用方法
- 查找字符串中出现最多的字符和个数(两种方法一个普通方法 一个是正则表达式方式)
- 重温数据结构:二叉树的常见方法及三种遍历方式 Java 实现
- 二叉树的两种遍历方式[递归遍历][非递归遍历]
- 根据前序跟中序遍历的结果建立二叉树——迭代和递归的方法
- 入门——创建桌面快捷方式两种方法
- 得到当前堆栈信息的两种方式(Thread和Throwable)的方法
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别