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

640?wx_fmt=png

本文为原创资源,欢迎分享,转载。

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

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

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

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

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

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

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

640?wx_fmt=jpeg

    以上述二叉树进行讲解:

  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。

层序

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

总结

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

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

640?wx_fmt=gif

640?wx_fmt=png

640?wx_fmt=gif

本篇会收录在满满干货-原创java基础分类中,欢迎转载,分享!!!!

往期好文:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

carl的分享笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值