上文中讲到了二叉树这种数据结构,那么这种数据结构是怎么遍历的呢,二叉树的遍历都是从根节点出发,按照某种次序进行整棵树的遍历,根据次序区分为四种方式,分别是前序,中序,后序,层序。关于这几种排序有个流传很久的口诀:
前序遍历:根结点 ---> 左子树 ---> 右子树
中序遍历:左子树---> 根结点 ---> 右子树
后序遍历:左子树 ---> 右子树 ---> 根结点
层次遍历:仅仅需按层次遍历就可以
下面,我们就来讲解一下这些口诀:
我们先画一颗简单的二叉树
以上述二叉树进行讲解:
- 前序
前序遍历口诀是:根结点 ---> 左子树 ---> 右子树。意思是先遍历根节点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,其实根据上面中序的遍历方式,我们应该就已经可以得出结论了,先从最左叶子节点C开始,左叶子节点C-C的根节点B-B的右节点D,下一步我们来进行整棵树右子树遍历,从左叶子节点开始,没有左叶子节点,那么就是右叶子节点F,F的根节点是E,最后遍历整棵树的根节点A,遍历顺序为C-B-D-F-E-A。
- 层序
层序遍历,顾名思义,也就是一层层遍历,根据从左至右,从上至下的顺序进行。遍历顺序为A-B-E-C-D-F。 - 总结
其实总结起来很简单,主要就是看看从什么节点开始,开始之后只关注与其相关的三个节点,分段进行操作排序,当相关三个节点完成之后,将相关三个节点再当成一个整体,根据排序规则继续找出三个相关的节点,以此类推。
好了,二叉树的几种遍历方式到这里就介绍完毕了,我会尽量用简单易懂的方式将一些知识记录成文章,方便读者在碎片时间进行学习。欢迎学习交流。