程序员怎能不会二叉树系列(二)二叉树的四种遍历

简介: 程序员怎能不会二叉树系列(二)二叉树的四种遍历

  上文中讲到了二叉树这种数据结构,那么这种数据结构是怎么遍历的呢,二叉树的遍历都是从根节点出发,按照某种次序进行整棵树的遍历,根据次序区分为四种方式,分别是前序,中序,后序,层序。关于这几种排序有个流传很久的口诀:


         前序遍历:根结点 ---> 左子树 ---> 右子树

         中序遍历:左子树---> 根结点 ---> 右子树

         后序遍历:左子树 ---> 右子树 ---> 根结点

         层次遍历:仅仅需按层次遍历就可以


   下面,我们就来讲解一下这些口诀:

    我们先画一颗简单的二叉树

e9dd298a21f6d06291d6b38f6e933cef_640_wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1.jpg

   以上述二叉树进行讲解:


  1. 前序
         前序遍历口诀是:根结点 ---> 左子树 ---> 右子树。意思是先遍历根节点A,然后是左子树B,但是B也有左子树,此时把B再当成根,下一步应该是根B的左子树C-右子树D。由于C节点跟D节点自身就是叶子节点,他们没有子节点,此时,根节点A的整个左子树B全部子孙节点已经遍历完毕,接下来,我们再来遍历根节点A的右子树E,再将E当成根节点,根E没有左节点,只有右节点F,此时,整棵树遍历完毕,最后的遍历顺序为A-B-C-D-E-F。

  2. 中序
        中序遍历口诀是:左子树---> 根结点 ---> 右子树。中序的逻辑有些奇怪,他是从整棵树的最左叶子节点开始,也就是上图的C节点,找到C节点的根节点,也就是B节点,然后再找到B节点的右节点D节点,此时根节点A的整颗左子树已经遍历完毕,根据上述口诀,再遍历根节点A,根节点A有一颗右子树节点E,此时,如果E有左子树应该先遍历E的左子树,从E的最左叶子节点开始,但是E此时没有左子树,那么我们接下来应该遍历根节点E,E下面有一个右叶子节点F,最后遍历F,至此,整个数据结构遍历完成,遍历顺序为C-B-D-A-E-F。

  3. 后序
        后序遍历口诀是:左子树 ---> 右子树 ---> 根结点。意思就是最后 遍历根节点A,其实根据上面中序的遍历方式,我们应该就已经可以得出结论了,先从最左叶子节点C开始,左叶子节点C-C的根节点B-B的右节点D,下一步我们来进行整棵树右子树遍历,从左叶子节点开始,没有左叶子节点,那么就是右叶子节点F,F的根节点是E,最后遍历整棵树的根节点A,遍历顺序为C-B-D-F-E-A。

  1. 层序
         层序遍历,顾名思义,也就是一层层遍历,根据从左至右,从上至下的顺序进行。遍历顺序为A-B-E-C-D-F。


  2. 总结
         其实总结起来很简单,主要就是看看从什么节点开始,开始之后只关注与其相关的三个节点,分段进行操作排序,当相关三个节点完成之后,将相关三个节点再当成一个整体,根据排序规则继续找出三个相关的节点,以此类推。

         好了,二叉树的几种遍历方式到这里就介绍完毕了,我会尽量用简单易懂的方式将一些知识记录成文章,方便读者在碎片时间进行学习。欢迎学习交流。

相关文章
|
12月前
二叉树相关问题细谈递归(下)
二叉树相关问题细谈递归(下)
61 0
|
12月前
|
存储
二叉树相关问题细谈递归(上)
二叉树相关问题细谈递归
69 0
|
算法 程序员
程序员怎能不会二叉树系列(一)简单了解二叉树
程序员怎能不会二叉树系列(一)简单了解二叉树
|
前端开发 算法 API
[LeetCode算法]有了二叉树层序遍历,妈妈再也不用担心我不会做二叉树层级题了
博主最近在刷`leetcode`,做到二叉树套题的时候发现很多题的解题思路都是基于二叉树的层序遍历来完成的,因此写下这篇文章,记录一下二叉树层序遍历这件"神器"在实战的运用。
145 1
|
存储 机器学习/深度学习 Java
《Java数据结构》这些树和二叉树的性质你还记得吗?
《Java数据结构》这些树和二叉树的性质你还记得吗?
116 0
|
存储
【2020团体程序设计天梯赛】L2-3 完全二叉树的层序遍历(后序遍历转层次遍历)
【2020团体程序设计天梯赛】L2-3 完全二叉树的层序遍历(后序遍历转层次遍历)
195 1
|
存储 算法
一篇文章带你玩转二叉树的层序遍历 | 十道题巩固练习(一)
一篇文章带你玩转二叉树的层序遍历 | 十道题巩固练习
124 0
一篇文章带你玩转二叉树的层序遍历 | 十道题巩固练习(二)
一篇文章带你玩转二叉树的层序遍历 | 十道题巩固练习
63 0
|
存储 算法
【数据结构与算法】第十二章:线索化二叉树
在二叉树的一些应用中,常常要求在数中查找具有某种特征的结点,或者是对树中的全部结点逐一进行处理,这就提出了一个遍历二叉树的问题。本章将详细介绍二叉树的存储和遍历。
170 0
【数据结构与算法】第十二章:线索化二叉树
|
存储 Java
【Java数据结构】二叉树到底是什么品种的树?以及二叉树有哪些基操
【Java数据结构】二叉树到底是什么品种的树?以及二叉树有哪些基操
【Java数据结构】二叉树到底是什么品种的树?以及二叉树有哪些基操