一、已知前序遍历序列和中序遍历序列,求后序遍历序列
例:已知某二叉树的前序遍历序列为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的左子树就解决了 ,那么右子树只需要按照同样的思路即可解决。