zoukankan      html  css  js  c++  java
  • 【数据结构】:树的先序,中序,后序遍历

    在数据结构当中一个很重要的结构则是树了,那么树的先序,中序,后序遍历是怎么进行起来的呢?

    一.先序遍历

    先序遍历是最简单的,也就是使用深度优先搜索(DFS)算法在树当中进行遍历,我们首先在树的左端走到底,在往下走的时候,没遇到一个节点就打印出来,直到走到底之后再向上返回,如果遇到已经打印,也就是走过的节点则查看这个节点的右端有没有没有打印的节点,如有则打印,没有则不打印。在下方这张图当中数字代表我们打印节点的顺序,1代表第一个就打印了出来,2代表第二个打印出来。

     在上面这张图当中,首先树的根节点是“make money fast”,因此这个节点最先被打印出来,然后从左走到底,一次打印“motivation”,greed。这个时候走到底了,我们向上返回,发现前一个节点motivition的右子节点还没有打印,也就是avidity,因此打印出avidity作为第四个节点。第四个节点向下搜索发现没有节点了,因此又向上返回,直到树的根节点。

    发现树的根节点下还有两个子节点没有打印,因此先打印这两个子节点左边的节点,也就是method。然后继续往左下走,依次打印出stock fraud, ponzi scheme,bank robbery,最后向上返回打印出最后一个节点References。这是这三个遍历方法当中最简单的一个方法了,接下来我们来看中序遍历。

    二.中序遍历

    如下图所示:

     中序遍历是我们走到底之后发现没有没有东西了才开始打印,而不是像先序一样边走边打印。在一棵子树当中的打印顺序是“左节点——跟节点——右节点”。因此我们也是首先向左下遍历到最底部,发现1下面没有东西了,因此向上返回打印跟节点,也就是2,打印完之后再前往右节点进行搜索,进入右节点发现4还有子节点,因此先打印左边的子节点3,再打印中间的4,最后大印5。接着向上返回到6,这个是整个左子树的根节点,因此将其打印,再遍历右子树即可。

    三.后序遍历

    如下所示:

     后序遍历就是先打印最底部的东西,和先序打印相反。遵循先遍历左树,然后进行“左树——右树——中树”的顺序进行打印。

  • 相关阅读:
    下载文件乱码问题的解决
    Jquery Ajax实例(一)
    JQuery实现checkbox的全选/取消全选,实现类似于邮箱功能
    C#重写ToString方法实例
    生成不重复的随机数
    List<T>清除重复某一项
    Ubuntu16.04安装有道词典
    Ubuntu16.04 VTK7.1.0+QT4.8.6+QtCreator开发环境配置
    MATLAB求解代数方程、微分方程的一些常用指令
    读取Simulink中Dataset类型的数据
  • 原文地址:https://www.cnblogs.com/geeksongs/p/13533688.html
Copyright © 2011-2022 走看看