根据前序和中序推出后序

转载 2016年08月29日 20:06:04

最近面试总遇到这种根据给出的两类序遍历,然后求按另一种形式序的遍历。看来有必要好好总结下这个知识点,省的每次笔试时都得花不少时间推导。

首先,我们看看前序、中序、后序遍历的特性: 
前序遍历:(根—>左—>右)
    1.访问根节点 
    2.前序遍历左子树 
    3.前序遍历右子树 
中序遍历:(左—>根—>
    1.中序遍历左子树 
    2.访问根节点 
    3.中序遍历右子树 
后序遍历:(左—>右—>
    1.后序遍历左子树 
    2.后序遍历右子树 
    3.访问根节点

 

三序中知道其中两个就可以推出第三个,但前提是我们必须知道中序(这里是针对二叉树的,不包括二叉搜索树).因为:先序和后序给我们提供的信息是一样的--告诉我们谁是根节点,中序则告诉我们左右子树在哪儿。

例:已知先序为eacbdgf,中序为abcdefg,求后序。

由先序我们知道e为根节点,我们在中序中把左右子树括起来 --(abcd)e(fg)

同样对左子树abcd进行分析,先序为acbd,中序为abcd.--a(bcd)

递归下去就可以了

后序为bdcafge

 

扩展:

在2014年阿里实习生招聘试题中就有一个问题:

下面关于二叉搜索树的是否正确?

给定一棵二叉搜索树的前序和后序遍历结果,无法确定这棵二叉搜索树。

这个说法是错误的。

二叉树(不是搜索二叉树),必须是中根加上先根或者后根就能构造出树,但是,这里面说了是二叉搜索树,已经暗含中根了

相关文章推荐

根据二叉树的前序和中序求后序

在面试的过程中,发现有几家公司都喜欢考这样的一道题,就是在一棵二叉树中,已知这棵二叉树的前序和中序遍历结果,要求写出后序遍历结果。  例如:在一棵二叉树总,前序遍历结果为:ABDGCEFH,中序...

根据二叉树先序和中序遍历结果求其后序遍历

首先我们先复习下不同类别的遍历: 先序遍历:遍历二叉树时先遍历根节点,ra...
  • layrong
  • layrong
  • 2014年09月12日 21:34
  • 2488

根据二叉树的前序序列和中序序列得到后序序列

一个例子: 前序序列:abdgcefh 中序序列:dgbaechf 求:后序序列 分析: 根据前序序列可知,a肯定是根节点。再在中序序列中找到a,发现a左侧是dgb,右侧是echf,则dgb...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

多条最短路径求个数,求路径上最大和,求最短路路径

作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求...

结构体变量成员的引用(两种方式)

struct book{ char*name[2012]; long price; char*pub[32]; }CGramer; //变量引用 CGramer book_1; book...

前序中序后序构造、遍历

  • 2014年12月03日 10:30
  • 4KB
  • 下载

前序中序求后序

  • 2014年10月06日 15:29
  • 438B
  • 下载

机试算法讲解: 第16题 练练你的推理:前序和中序,你能推出后序吗?

/* 利用前序和中序,求后续遍历结果 输入: FDXEAG(前序) XDE F AG(中序):例如找到F=3(i),则前序的左子树遍历范围是:s1+1到s1+3(i),右子树遍历范围是:s1+3(i)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据前序和中序推出后序
举报原因:
原因补充:

(最多只允许输入30个字)