算法创作 | 二叉树遍历问题解决方法

简介: 算法创作 | 二叉树遍历问题解决方法

问题描述

二叉树的先序遍历、中序遍历、后序遍历怎么求?


解决方案

给你一个二叉树(如图)那么怎么找出它的先序遍历、中序遍历、后序遍历呢?

 

我们先看一个简单二叉树来了解它的概念。

所谓前序,中序,后序就是指根所在的位置。比如前序遍历可以理解成根在前,简记成根--右。中序遍历可以理解成根在中间,简记成左--右。同理后序遍历即左--根。

知道这个简单记忆方法后我们再来看一个稍微复杂的二叉树。

要想求解这个二叉树的前序遍历、中序遍历、后序遍历显然比刚才的简单二叉树更难,但是运用原理是一样的。

那么我们是怎么得到它的前序遍历呢?分为5个步骤:

1)根据口诀,前序就是根在前,即根左右(2)再从上往下把这个二叉树拆解成“ABC”“BEF “CGH”三棵简单的二叉树(3)确定大范围,从上往下是(根左右):AB______C_______4)再锁定到拆解成的另外两棵树BEF “CGH”,注意这两棵树的顺序是先左后右,所以先看“BEF”。可以确定在这棵简单二叉树里它的前序就是BEF。根据先左后右,再看树“CGH”,可以确定在这棵简单二叉树里它的前序就是CGH(5)现在我们已经确定每棵树的前序,那么就可以直接回填了,即AB_EF_____C_GH______

同理,我们怎么得到它的中序遍历呢?同样分成5个步骤:

1)根据口诀,中序就是根在中间,即左根右(3)确定大范围,从上往下是(左根右):___B___A___C___(4) 再锁定到拆解成的另外两棵树BEF “CGH”,注意这两棵树的顺序是先左后右,所以先看“BEF”。可以确定在这棵简单二叉树里它的中序就是EBF。根据先左后右,再看树“CGH”,可以确定在这棵简单二叉树里它的中序就是GCH(5)现在我们已经确定每棵树的前序,那么就可以直接回填了,即

__E_B_F__A_G__C__H_

那么最后我们怎么得到它的后序遍历呢?同样用5个步骤来看:

1)根据口诀,后序就是根在最后,即左右根(2再从上往下把这个二叉树拆解成“ABC”“BEF “CGH”三棵简单的二叉树(3)确定大范围,从上往下是(左右根):

____B____CA(4) 再锁定到拆解成的另外两棵树BEF “CGH”,注意这两棵树的顺序是先左后右,所以先看“BEF”。可以确定在这棵简单二叉树里它的后序就是EFB。根据先左后右,再看树“CGH”,可以确定在这棵简单二叉树里它的后序就是GHC(5)现在我们已经确定每棵树的前序,那么就可以直接回填了,即_EF___B_GH___CA

到这里,它的前序遍历、中序遍历、后序遍历就全部求解完成了。

结语

本文章讲了怎么找一棵二叉树的遍历结构,画了两棵比较简单的树,讲述了其原理,其实还有更多复杂的树在等着我们去探索和发现,但是授人以鱼不如授人以渔,只要掌握其原理和方法,加上足够的耐心和细心,再复杂的二叉树都会被我们肢解成一些些简单的“小树枝”然后去破解它!

目录
相关文章
|
13天前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
16天前
|
存储 缓存 算法
如何提高二叉树遍历算法的效率?
选择合适的遍历算法,如按层次遍历树时使用广度优先搜索(BFS),中序遍历二叉搜索树以获得有序序列。优化数据结构,如使用线索二叉树减少空指针判断,自定义节点类增加辅助信息。利用递归与非递归的特点,避免栈溢出问题。多线程并行遍历提高速度,注意线程安全。缓存中间结果,避免重复计算。预先计算并存储信息,提高遍历效率。综合运用这些方法,提高二叉树遍历算法的效率。
42 5
|
16天前
|
算法
树的遍历算法有哪些?
不同的遍历算法适用于不同的应用场景。深度优先搜索常用于搜索、路径查找等问题;广度优先搜索则在图的最短路径、层次相关的问题中较为常用;而二叉搜索树的遍历在数据排序、查找等方面有重要应用。
22 2
|
19天前
|
机器学习/深度学习 JSON 算法
二叉树遍历算法的应用场景有哪些?
【10月更文挑战第29天】二叉树遍历算法作为一种基础而重要的算法,在许多领域都有着不可或缺的应用,它为解决各种复杂的问题提供了有效的手段和思路。随着计算机科学的不断发展,二叉树遍历算法也在不断地被优化和扩展,以适应新的应用场景和需求。
24 0
|
1月前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
24 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
1月前
|
存储 算法 搜索推荐
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
这篇文章主要介绍了顺序存储二叉树和线索化二叉树的概念、特点、实现方式以及应用场景。
26 0
数据结构与算法学习十七:顺序储存二叉树、线索化二叉树
|
1月前
|
存储 算法
【二叉树】—— 算法题
【二叉树】—— 算法题
【二叉树】—— 算法题
|
1月前
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
27 0
|
3月前
|
算法
【初阶数据结构篇】二叉树算法题
二叉树是否对称,即左右子树是否对称.
28 0
|
4月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
45 1
下一篇
无影云桌面