二叉树的遍历方式可以很多,如果我们限制了从左到右的习惯方式,那 么主要就分为四种:

    1. 前序遍历

      规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。

      如图6-8-2所示,遍历的顺序为:ABDGH-CEIF。 image.png

    1. 中序遍历

      规则是若树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。

      如图6-8-3所示,遍历的顺序为:GDHBAE-ICF。 image.png

    1. 后序遍历

      规则是若树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右子树,最后是访问根结点。

      如图6-8-4所示,遍历的顺序为:GHDBIEFCA。 image.png

    1. 层序遍历

      规则是若树为空,则空操作返回,否则从树的第一层,也就是根结点开始访问,从上而下逐层遍历,在同一层中,按从左到右的顺序对结点逐个访问。

      如图6-8-5所示,遍历的顺序为:ABCDEFGHI。 image.png

    有同学会说,研究这么多遍历的方法干什么呢?

    我们用图形的方式来表现树的结构,应该说是非常直观和容易理解,但是对于计算机来说,它只有循环、判断等方式来处理,也就是说,它只会处理线性序列,而我们刚才提到的四种遍历方法,其实都是在把树中的结点变成某种意义的线性序列,这就给程序的实现带来了好处。

    另外不同的遍历提供了对结点依次处理的不同方式,可以在遍历过程中对结点进行各种处理。