二叉树由遍历确定一棵树

本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关。
本文章是自己学习的一些记录。

开始

首先回顾一下,利用已知的一棵二叉树,写出它的先、中、后层次的遍历
已知一棵树:
在这里插入图片描述
先序遍历(根、左、右):
0137849256

中序遍历(左、根、右):
7381940526

后序遍历(左、右、根):
7839415620

反推

现在根据之前的先序、中序、后序中的两个组合推出原先的二叉树的结构(两两的组合必须包含中序)。

例如:

假定有一颗树的先序遍历为:0137849256 中序遍历为:7381940526
思路:
1、首先根据先序遍历确定根,根为0,所以根据根是0可以划分为两部分:
0 和137849256
2、接下来根据中序遍历的信息(因为知道根是0了),所以可以划分为:
738194 0 526
3、再根据先序遍历的137849256 确定为1为左子树的根,所以根据中序的738194就可以划分为:
738 1 94
4、又因为中序的738按照左、根、右的思路所以3为根
5、根据以上的思路分析(可以自己在纸上面画出来),就可以把这棵树画出来了

在这里插入图片描述

再例如:

假定有一颗树的后序遍历为:7839415620 中序遍历为:7381940526
思路:
1、根据后序(左、右、根)的顺序,确定根为0,所以后序分为:
783941562和0
2、中序(左、根、右)根据后序的信息可以划分为738194 0 526
所以根据中序738194 0 526的划分,后序的排分的话为783941 562 和0
所以1为783941子树的根,2为562的根
3、因为1为根,所以中序的738194 可以划分为738 1 94 ,所以3为738的根,4为94的根

所以根据上面的思路画出这棵树:
在这里插入图片描述
参考资料:传智播客数据结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值