美文网首页
浅谈二叉树的(4种)遍历算法

浅谈二叉树的(4种)遍历算法

作者: 三省吾身_9862 | 来源:发表于2021-05-20 13:58 被阅读0次

遍历存储结构做的最多的操作,既是重点,也是难点。本节将从初学者的角度给大家分析一下 4 种遍历二叉树算法的由来。

遍历二叉树的算法【主要讲的是‘取值’的时机。应该不涉及性能问题】

image

1 二叉树示意图

图 1 是一棵二叉树,对于初学者而言,遍历这棵二叉树无非有以下两种方式。

层次遍历

前面讲过,树是有层次的,拿图 1 来说,该二叉树的层次为 3。通过对树中各层的节点从左到右依次遍历,即可实现对正棵二叉树的遍历,此种方式称为层次遍历。

比如,对图 1 中二叉树进行层次遍历,遍历过程如图 2 所示:

image

图 2 层次遍历二叉树示意图

普通遍历【先序遍历、中序遍历、后序遍历】

其实,还有一种更普通的遍历二叉树的思想,即按照 "从上到下,从左到右" 的顺序遍历整棵二叉树。

还拿图 1 中的二叉树举例,其遍历过程如图 3 所示:

image

图 3 普通方式遍历二叉树

以上仅是从初学者的角度,对遍历二叉树的过程进行了分析。接下来我们从程序员的角度再对以上两种遍历方式进行剖析。

这里,我们要建立一个共识,即成功遍历二叉树的标志是能够成功访问到二叉树中所有的节点。

二叉树遍历算法再剖析

首先观察图 2 中的层次遍历,整个遍历过程只经过各个节点一次,因此在层次遍历过程,每经过一个节点,都必须立刻访问该节点,否则错失良机,后续无法再对其访问。

若对图 1 中二叉树进行层次遍历,则访问树中节点的次序为:

1 2 3 4 5 6 7

而普通遍历方式则不同,通过观察图 3 可以看到,整个遍历二叉树的过程中,每个节点都被经过了 3 次(虽然叶子节点看似只经过了 2 次,但实际上可以看做是 3 次)。以图 3 中的节点 2 为例,如图 4 所示,它被经过了 3 次。

image

图 4 遍历节点 2 的过程示意图

因此,在编程实现时,我们可以设定真正访问各个节点的时机,换句话说,我们既可以在第一次经过各节点时就执行访问程序,也可以在第二次经过各节点时访问,甚至可以在最后一次经过各节点时访问。

这也就引出了以下 3 种遍历二叉树的算法:

  1. 先序遍历:每遇到一个节点,先访问,然后再遍历其左右子树(对应图 4 中的 ①);
  2. 中序遍历:第一次经过时不访问,等遍历完左子树之后再访问,然后遍历右子树(对应图 4 中的 ②);
  3. 后序遍历:第一次和第二次经过时都不访问,等遍历完该节点的左右子树之后,最后访问该节点(对应图 4 中的 ③);

以图 1 中的二叉树为例,其先序遍历算法访问节点的先后次序为:

1 2 4 5 3 6 7

中序遍历算法访问节点的次序为:

4 2 5 1 6 3 7

后序遍历访问节点的次序为:

4 5 2 6 7 3 1

以上就是二叉树 4 种遍历算法的由来,其各个算法的具体实现过程其代码实现后续章节会详解介绍。

相关文章

  • 算法-二叉树算法总结

    二叉树算法总结 1 二叉树的遍历 1.1 前序遍历 递归 迭代 1.2 中序遍历 递归 迭代 1.3 后序遍历 递...

  • ALI 算法

    二叉树遍历算法: 按层遍历, 中序前序后序:

  • 二叉树的遍历

    二叉树的遍历 二叉树常用的遍历方式有:前序遍历、中序遍历、后序遍历、层序遍历四种遍历方式,不同的遍历算法,其思想略...

  • 二叉树的中序遍历(Java)——Morris迭代算法

    二叉树的中序遍历 对于此题而言,若采用递归算法(简单),我们使用深度优先算法来遍历二叉树。若采用迭代算法,我们使用...

  • 算法学习

    数据结构学习笔记:树与树的表示、二叉树及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树、集合及其运算算法学习笔记浅谈...

  • 二叉树遍历(递归算法和非递归算法)

    实验三 二叉树遍历(递归算法和非递归算法) 一.实验目的 1.掌握二叉树的存储结构与基本操作 2.掌握二叉树的遍历...

  • 二叉树的遍历

    数据结构算法 二叉树的遍历

  • 翻转二叉树(Java)

    翻转二叉树 对于此题而言,我们使用深度优先算法来遍历二叉树。 1、深度优先算法是根据二叉树的路径进行遍历2、广度优...

  • 深入浅出二叉树遍历的非递归算法 2019-11-15(未经允许,

    1、二叉树遍历的递归算法 递归实现二叉树的遍历非常直观,回顾一下递归的代码: 前序遍历 中序遍历 后序遍历 他们的...

  • 二叉树遍历算法

    摘要:二叉树主要有3种遍历算法,分为为先序、中序、后序。本文对二叉树的3种遍历算法的遍历规则进行介绍,并给出3种遍...

网友评论

      本文标题:浅谈二叉树的(4种)遍历算法

      本文链接:https://www.haomeiwen.com/subject/ciovjltx.html