1. 二叉树的遍历
二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。二叉树的遍历次序不同于线性结构,线性结构最多也就是分为顺序、循环、双向等简单的遍历方式。树的结点之间不存在唯一的前驱和后继这样的关系,在访问一个结点后,下一个被访问的结点面临着不同的选择。
二叉树的遍历方式可以很多,如果我们限制了从左到右的习惯方式,那么主要就分为一下四种:前序遍历;中序遍历;后序遍历;层序遍历。
1.1 前序遍历
若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树如下图所示
我的理解这种方式实际上是从上到下,从左到右,当某一个结点的左子树遍历完成后就开始遍历这个节点的右子树。因为总是先访问根节点,所以叫做前序遍历,简记为“根左右”。比如说遍历的过程到了 H 这一点之后,结点 D 左子树已经遍历完成了,所以现在开始遍历 D 的右子树,因此到了 I ;然后结点 B 的左子树也遍历完毕了,所以从 E 开始遍历 B 的右子树,接着这样的顺序继续下去。
因此遍历的顺序为:ABDHIEJCFKG。