给出两种遍历结果还原二叉树

确定一颗二叉树

我们知道遍历二叉树的办法有三种:
先序遍历,中序遍历,和后序遍历

他们的关键就是根节点被访问的顺序

然后我们直入主题:
如何通过这三种顺序来确定一棵二叉树呢?
我们只需要直到其中两种
(当然知道所有更行A.A)

具体是那两种?
经过研究发现,①我们知道先序遍历的结果和中序遍历的结果
或者②知道中序遍历的结果和后续遍历的结果
就可以确定一颗二叉树

为什么中序遍历不可缺
为什么不能是知道先序和后序可以确定呢?

我们从二叉树的结构下手
根 左子树右子树
所以除了根就是分成两部分对吧
中序遍历就可以看出是分成哪两部分所以它是关键
好了知道这个我先列出我对于如何根据①②还原整棵二叉树的做法:

一共分为两步 重复执行 直到树还原为止
A.找根
B.找子树

下面通过例子来说明吧。

已知中序:BDCEAFHG
已知后序:DECBHGFA

我们首先来找根,如何找根?通过后序遍历的特点我们可以得出A是最后访问的,所以A就是整棵树的根
然后找子树,我们知道A是根以后,通过中序遍历的结果和中序遍历的特点我们可以看出,排在A左边的BDCE构成了A的左子树,FHG构成了A的右子树

接下来我们找左子树的根,根据后序遍历我们可以知道 BDCE中B是最后一个出现的,所以B是左子树的根
然后根据中序遍历的特点和结合中序结果可知,B只有右子树,右子树的根就是C(C在后序中排靠后),然后我们再看中序结果和中序特点易得,D是C的左儿子,E是C的右儿子。

然后我们找右子树的根,根据后序结果我们知道F是右子树的根,然后F左边是A 结合中序特点知F只有右子树,然后G是右子树的根,根据中序特点知道H是G的左儿子

由此我们便还原了这个二叉树
在这里插入图片描述

好了 模拟完这个过程你应该知道其中的套路了
后序无非就是找后面出现的来确定根
那么先序就是找前面出现的
所以下面先序的例子需要你自己动手模拟了

已知先序:ABDFCEGH
已知中序:BFDAGEHC

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值