本文为原创资源,欢迎分享,转载。
上文中讲到了二叉树这种数据结构,那么这种数据结构是怎么遍历的呢,二叉树的遍历都是从根节点出发,按照某种次序进行整棵树的遍历,根据次序区分为四种方式,分别是前序,中序,后序,层序。关于这几种排序有个流传很久的口诀:
前序遍历:根结点 ---> 左子树 ---> 右子树
中序遍历:左子树---> 根结点 ---> 右子树
后序遍历:左子树 ---> 右子树 ---> 根结点
层次遍历:仅仅需按层次遍历就可以
下面,我们就来讲解一下这些口诀:
我们先画一颗简单的二叉树
以上述二叉树进行讲解:
前序
前序遍历口诀是:根结点 ---> 左子树 ---> 右子树。意思是先遍历根节点A,然后是左子树B,但是B也有左子树,此时把B再当成根,下一步应该是根B的左子树C-右子树D。由于C节点跟D节点自身就是叶子节点,他们没有子节点,此时,根节点A的整个左子树B全部子孙节点已经遍历完毕,接下来,我们再来遍历根节点A的右子树E,再将E当成根节点,根E没有左节点,只有右节点F,此时,整棵树遍历完毕,最后的遍历顺序为A-B-C-D-E-F。
中序
中序遍历口诀是:左子树---> 根结点 ---> 右子树。中序的逻辑有些奇怪,他是从整棵树的最左叶子节点开始,也就是上图的C节点,找到C节点的根节点,也就是B节点,然后再找到B节点的右节点D节点,此时根节点A的整颗左子树已经遍历完毕,根据上述口诀,再遍历根节点A,根节点A有一颗右子树节点E,此时,如果E有左子树应该先遍历E的左子树,从E的最左叶子节点开始,但是E此时没有左子树,那么我们接下来应该遍历根节点E,E下面有一个右叶子节点F,最后遍历F,至此,整个数据结构遍历完成,遍历顺序为C-B-D-A-E-F。
后序
层序
层序遍历,顾名思义,也就是一层层遍历,根据从左至右,从上至下的顺序进行。遍历顺序为A-B-E-C-D-F。
总结
其实总结起来很简单,主要就是看看从什么节点开始,开始之后只关注与其相关的三个节点,分段进行操作排序,当相关三个节点完成之后,将相关三个节点再当成一个整体,根据排序规则继续找出三个相关的节点,以此类推。
好了,二叉树的几种遍历方式到这里就介绍完毕了,我会尽量用简单易懂的方式将一些知识记录成文章,方便读者在碎片时间进行学习。欢迎学习交流。
本篇会收录在满满干货-原创java基础分类中,欢迎转载,分享!!!!
往期好文: