二叉树的三种遍历方式
二叉树的三种遍历方式
一、二叉树的前序、中序、后序遍历
二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。

规则:
- 前中后序是对根而言的,前就是先说根是啥,中就是中间说根是啥,后是最后说根是啥。
- 除根以外,其它同级节点的遍历顺序是先左后右。
举栗子:
比如上图正常的一个满节点,:根节点、:左节点、:右节点
- 前序顺序是
- 中序顺序是(先左后根最后右)
- 后序顺序是(先左后右最后根)

比如上图二叉树遍历结果
前序遍历:
中序遍历:
后序遍历:
分析中序遍历如下图,中序比较重要

二、前序、中序、后序遍历知二求一
前序、中序、后序遍历知二求一是二叉树中的必考点。为了能够发现规律,不用每次都费劲地推算,特整理如下:
首先回顾一下三种遍历的特点:
前序遍历
:根左右
中序遍历
:左根右
后序遍历
:左右根
:已知前序、中序遍历,求后序遍历

【分析】:
前序:HGEDBFCA
中序:EGBDHFAC
1、根据前序序列的特点(根左右),可知H是整个树的根。
(至此作为选择题而言,已经可以选出正确答案B了。但我们的目标是求出后序序列)

2、根据中序序列的特点(左根右),可知,EGBD位于树的左子树,FAC位于树的右子树。

3、又因为前序序列的特点可知树根后面紧接着的应当是左子树的树根。所以G是左子树的树根。

4、由F是右子树在前序序列中出现的第一个,根据前序序列的特点(根左右),可知F是右子树的树根。
5、再对G重复2~4步:
5->2 G作为根时,中序序列G的左边是它的左子树,可知只有E一个节点。G右边到H之前的都是G的右子树。可知有B、D。
5->3 E作为G的叶子节点,无需判断左子树树根。
5->4 由D是G的右子树在前序序列中出现的第一个,根据前序序列的特点(根左右),可知D是G的右子树的树根。
6、由于中序序列中,B先于D出现,且D是根,所以B为D的左子树节点。
7、对F重复2~4步,得到最终结果:

后序序列为:EBDGACFH
总结
- 前序的第一个是整个树的根
- 后序的最后一个是整个树的根
- 中序用来判别左右子树的划分
- 前序序列中左子树部分的第一个节点是左子树的根节点
- 前序序列中右子树部分的第一个节点是右子树的根节点
为什么已知前序、后序无法求中序?
证明一件事是对的很难,证明一件事是错的很简单,比如,举个栗子说明它不对就完了。
如下前序 ab 后序ba
a 或者 a
/ \
b b
中序是ba 或者ab,所以是不知道中序的。
分类:
二叉树
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2018-08-02 mysql备份与还原
2017-08-02 PostgreSQL9.6.3的REDIS测试