二叉树的遍历是指从根节点触发,按照某种次序依次访问二叉树中所有的节点。由于不同于线性结构,二叉树达到一个节点需要选择两个子节点的先后顺序,所有遍历方式有很多。
1. 二叉树遍历方法
二叉树遍历方式有很多,所以如下介绍的遍历方式,我们约定从左往右进行遍历。我们需要遍历的树结构如下:

下面的遍历算法用Python实现,不会Python的同学不用担心,因为算法逻辑很简单。先看下我们的节点对象的定义:

01、前序遍历

前序遍历算法,采用递归,先判断节点是否为空,如果为空则返回。先打印当前节点内容,然后依次递归所有左子节点,再依次递归所有右子节点。遍历顺序为:ABDGHCEIF递归算法如下:

02、中序遍历

中序遍历算法,采用递归,先判断节点是否为空,如果为空则返回。先依次递归所有左子节点,然后打印当前节点内容,再递归所有右子节点。遍历顺序为:GDHBAEICF递归算法如下:

03、后序遍历

后序遍历算法,采用递归,先判断节点是否为空,如果为空则返回。先依次递归所有左子节点,再递归所有右子节点,最后打印当前节点内容。遍历顺序为:GHDBIEFCA递归算法如下:

04、按层遍历

按层遍历算法,我们将每层所有节点作为列表,传入函数进行递归,先传入列表是否为空,如果为空则返回。声明一个下一层级的子集列表。依次循环当前传入的节点列表,并打印节点数据,将当前节点左节点添加到下一层级的子集列表中,然后添加右节点。最终遍历顺序为:ABCDEFGHI递归算法如下:

05、完整代码:






