每天一道算法_9_由后序遍历和中序遍历求前序遍历

假设一棵二叉树的后序遍历序列为 DGJHEBIFCA ,中序遍历序列为 DBGEHJACIF ,求前序遍历。 整体思路是这样的,由后序遍历找到每个节点,然后由中序遍历判断左右子树,将整个二叉树还原后写出前序遍历。后序遍历的顺序知道,最后一个A是二叉树的根节点,然后把中序遍历从A分成两段,A左边的是左子树,A右边的是右子树,结果如下 然后看右边的子树,从后序遍

大家好,又见面了,我是全栈君。

假设一棵二叉树的后序遍历序列为 DGJHEBIFCA ,中序遍历序列为 DBGEHJACIF ,求前序遍历。

 

整体思路是这样的,由后序遍历找到每个节点,然后由中序遍历判断左右子树,将整个二叉树还原后写出前序遍历。

后序遍历的顺序知道,最后一个A是二叉树的根节点,

然后把中序遍历从A分成两段,A左边的是左子树,A右边的是右子树,

结果如下

每天一道算法_9_由后序遍历和中序遍历求前序遍历

 

然后看右边的子树,

从后序遍历知道,左子树的后序遍历为IFC,中序遍历为CIF

问题回到刚开始,重复之前的过程,由后序遍历知道根节点为C,把中序遍历从C分成两段,

左边是左子树,右边是右子树

也就是右边只有一个右子树,

每天一道算法_9_由后序遍历和中序遍历求前序遍历

 

然后再次重复以上过程,现在IF的后序遍历是IF,中序遍历是IF,说明

节点时F,I是F的左子树

每天一道算法_9_由后序遍历和中序遍历求前序遍历

 

这样,这棵二叉树的右子树就完全复原了,左子树的方法完全相同,就是一个递归过程,流程图如下

 

每天一道算法_9_由后序遍历和中序遍历求前序遍历

 

 

NEXT:

每天一道算法_9_由后序遍历和中序遍历求前序遍历

 

 

 

最后得到的完整二叉树如下:

每天一道算法_9_由后序遍历和中序遍历求前序遍历

 

然后写出前序遍历就可以了,是ABDEGHJCFI

用算法可以实现的,暂时留在这。

 

 

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121363.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 虚拟机联网的三种方式(虚拟机 macos)

    虚拟机联网与本机共享网络window任务栏网络图标右键打开“网络和internet”设置下拉点击网络和共享中心????点击蓝色的WLAN(xxx)????点击属性(P)、共享????如图勾选启动虚拟机,点击菜单栏中的虚拟机????设置????网络适配器勾选仅主机模式:与主机共享的专业网络如下????最后启动MacOS,打开设置中的网络,我们可以看到以太网前面呈现绿色点,表明设置成功。ps:更改设置前已启动…

    2022年4月12日
  • node配置淘宝镜像_node配置淘宝镜像

    node配置淘宝镜像_node配置淘宝镜像node安装推荐去官网下载最新版本的,官网地址:https://nodejs.org/en/download/依照系统版本下载即可,推荐window系统下载msi格式的。下载下载直接安装下一步下一步。安装成功了以后打开cmdnode-v来检测是否安装成功cnpm安装由于我们被墙的厉害,所以使用npm下载模块时候会发现效率真的很慢,所以推荐淘宝的镜像,安装说明推荐:$npmins

    2022年8月31日
  • SpringCloud、Istio比较

    对比项 SpringCloud Istio AutoScaling&selfhealing HealthIndicator PoolEjection Deployment&Scheduing 无 Deploymentstrategy,DarkLaunch,A/B,cannary Resilience&Fault…

    2022年4月15日
  • 安装SQL Server2008的示例数据库AdventureWorks 2008「建议收藏」

    安装SQL Server2008的示例数据库AdventureWorks 2008「建议收藏」在安装SQLServer2008时,默认是不安装示例数据库的,如果要用到的话,就得自行下载相应的数据库,然后安装,当然,安装也还是要有一定的方法的,不然装不上。1、检查安装环境,下载安装包首先,检查你电脑的环境,是否有安装SQLServer2008,并且打了SQL2008SP1补丁。然后去官网下载AdventureWorks2008示例数据库安装包。下载地址是:http://msft

    2022年9月4日
  • PAT乙级1009. 说反话(C语言)

    PAT乙级1009. 说反话(C语言)PAT乙级真题题解目录/**1.输入含空格的字符串:用gets()读取*2.句子颠倒,单词本身字母不颠倒:*2.1从末尾单词开始输出*2.2利用指针使单词本身正序*2.3空格是单词结束的标识*/#include<stdio.h>#include<string.h>…

    2022年6月6日
  • 抽象工厂模式与工厂方法模式有哪些不同_工厂方法和抽象工厂

    抽象工厂模式与工厂方法模式有哪些不同_工厂方法和抽象工厂Abstract Factory动机实例模式定义结构要点总结笔记动机在软件系统中,经常面临着”一系列相互依赖的对象“的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作如果应对这种变换?如何绕过常规的对象创建方法(new),提供一种”封装机制“来避免客户程序和这种”多系列具体对象创建工作“的紧耦合?实例数据库连接的时候会有很多关联的对象,这些对象是一个整体朴素class EmployeeDAO{public: vector<EmployeeDAO> GetEm

    2022年8月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号