如何根据后序和中序遍历序列求二叉树

根据后序和中序遍历序列求二叉树

前文:两道例题让你彻底学会如何根据遍历序列求二叉树
中序:左、根、右
后序:左、右、根

直接上题:

中序:DCBGEAHFIJK
后序:DCEGBFHKJIA

第一步:还是先找到老父亲节点

后序的最后一个节点:A

第二步:划分大哥和二弟的家族

在中序中,老父亲节点左边的为大哥家族,右边的为二弟家族

在这里插入图片描述

第三步:完善细节、总结经验

我们先看左边的节点,还是那样,找在两个序列中都挨在一起的几个节点:
1.D、C
2.E、G
3.B、G

1.先看第一个:D和C,D在先序中是第一个访问的,所以他在整个树中是最左边的那个点,他俩在中序和后序中都是同样的顺序:说明他俩一个为父亲,一个为左节点,至于为啥不是同一个父亲的两个孩子,这个想想就知道了,如果他俩有共同的父亲,那么在中序中,访问完左孩子后就应该访问父亲,但是没有。
在这里插入图片描述

2.再看E、G:在中序和后序中,这两个的出现顺序是相反的,那么他俩一定是父亲和右孩子,谁是父亲很好判断,在中序中,谁先出来谁是父亲
在这里插入图片描述

3.继续看B、G,和2相同,顺序相反,这就可以把B连上去了
在这里插入图片描述

我们在来看一下顺序,在中序中的顺序是BGE,后序中是EGB,连接方式就是一条右直线。可以得到结论:如果在中序和后序中多个点是在一起出现的,且顺序相反,那么他们能连成一条右直线

大致的连接方式都画出来了,剩下的就是把他们拼在一起

CD两个点可以确定是在最左边,接下来有两种连法,我们先试一下,再来找规律:
一:B为C的右孩子
在这里插入图片描述
二:C为B的左孩子
在这里插入图片描述

先看一这种连接方式,满足中序的DCBGE,后序呢?DEGBC和题目不符,舍去

那么只有二了,二的连接方式是完全符合题目的。。

总结一下:如果两个点在中序和后序种同时出现(中间没有任何其他点),那么,作为父亲的节点只有一个孩子

间--------------------隔---------------------------线

左边的完成了,接下来画右边的
同样的方法:找到在两个序列中连着出现的点
1.I、J、K
2.H、F

1很容易,中序中和后序中三个点的出现顺序完全相反
瞬间画出结果,而且还能确定很重要的一点:J只有K一个孩子
在这里插入图片描述
根据中序中,K是最后访问到的,所以K位于该二叉树的最右端,在后序中,I是倒数第二个访问的,所以I的老父亲A的右孩子

在这里插入图片描述

2.HF在两个序列中出现顺序相反
也是直接画出结果
在这里插入图片描述
接下来就是把这两个连起来

之前得到的结论,J只有K一个孩子,而K是整个树中最右边的节点,所以只能这么连:
在这里插入图片描述
这样一个二叉树就画完了,最后在根据二叉树写一下他的中序和后序序列验证一下结果。我比较有自尊,坚信自己是对的,就不验证了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值