《算法通关村—如何使用中序和后序来恢复一颗二叉树》

本文通过中序和后序遍历序列,逐步解析如何确定二叉树的结构,从根节点开始,逐步划分左子树和右子树,直至构建完整二叉树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《算法通关村—如何使用中序和后序来恢复一颗二叉树》

中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12
后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1

通过后续遍历我们知道根节点是1,通过知道根节点是1,我们就可以从中序序列知道那些 是根节点的左右子树元素。3 4 8 6 7 5 2是根节点的左子树,10 9 11 15 13 14 12是根节点的右子树,就可以进行一个简单的划分。

在这里插入图片描述

接下来我们在进行左子树的划分,通过一次划分之后,我们知道左子树的中序遍历是:3 4 8 6 7 5 2 后序遍历为:8 7 6 5 4 3 2从此可以知道2是这一次的根节点了,进行划分,就可以知道以2为根节点的树只有左节点,没有右节点,从此我们又可以画出以2 为根节点的示意图:

在这里插入图片描述

我们再往下看,然后就是序列:8 7 6 5 4 3 这个序列是后续遍历,所以可以这个子树的根节点是3,然后我们看上面的中序的结果可以知道以3为根节点的树,左子树为空,右子树为:4 8 6 7 5 ,此时以3为根节点的中序遍历为3 4 8 6 7 5后序为:8 7 6 5 4 3:然后我们又可以接着往下画:

在这里插入图片描述

从上面的我们可以知道接下的树的中序遍历为:4 8 6 7 5 后序遍历为:8 7 6 5 4 由后序遍历可知4是根节点,又从中序遍历可知以4为根节点的树左子树为空,右子树是8 6 7 5,可画图如下:
在这里插入图片描述

接着来后面的中序变为:8 6 7 5 ,后序为:8 7 6 5 ,由此可知5为根节点,以5为根节点的树右子树为空,左子树为8 6 7 ,图如下 :

在这里插入图片描述

接着中序序列为8 6 7 后序序列为:8 7 6 由此可知根节点是6,左子树右子树分别是8,7,图如下:

在这里插入图片描述

在以1 为根节点的树中以同样的方式进行补全,就可以得到完整的树如下:

在这里插入图片描述

点击链接:我正在「编程导航」和朋友们讨论有趣的话题,你⼀起来吧?

也可以加我QQ(2837468248)咨询说明来意!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xwhking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值