二叉树前序、中序、后序遍历的“知二求一”

一、已知前序遍历序列和中序遍历序列,求后序遍历序列

 

        例:已知某二叉树的前序遍历序列为5 7 4 9 6 2 1,

                中序遍历序列为4 7 5 6 9 1 2,

                求其后续遍历

        首先我们从已知题目中可以获取的信息有:1、由前序遍历可知5即为二叉树的根,2、由中序遍历结合前序遍历可知7和4为5的左子树的内容,而6912则为右子树的内容

        

        第二步,在经过上一步处理之后我们抛去已知位的数字,那么剩下的前序遍历中的数字就剩749621,中序遍历中的数字就为左半部分为47右半部分为6912

        

        第三步、经过上一步之后我们右确定了三个数字的位置,那么未确定位置中前序遍历为621,中序遍历为6912,同理由中序遍历可知6在9的左侧即为9的左子树而1和2为右子树

 到这里我们就推出了后序遍历

二、已知中序遍历和后续遍历,求得前序遍历

        例:已知某二叉树的中序遍历序列为:JGDHKBAELIMCF

                后序遍历序列为:JGKHDBLMIEFCA

第一步:由中序遍历的特性可知A为根节点

         

第二步:继续分析,后序遍历当子树遍历完才会遍历根

第三步:从后序中直接获取的信息就这么多了,那么接下来我们从中序中获取信息

第四步:接下来我们针对最后这几个字母的关系进行分析

 到这里,我们已经还原了整棵树,那么 前序遍历的(根、左子树、右子树)

 三、通过前两个案例,我们举一反三,如果有前序遍历和中序遍历,我们是否能得到后序遍历呢?

例:前序遍历:ABDGJHKCEILMF;中序遍历:JGDHKBAELIMCF

        求后序遍历的结果

1、首先仍然是通过前序遍历确定A为根节点

2、继续分析 

 3、到这一步之后我们基本就可以解决左子树的关系问题

到这步A的左子树就解决了 ,那么右子树只需要按照同样的思路即可解决。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值