1. 树的遍历
1.1 遍历的定义
定义:按照一定次序访问树中所有节点,并 且每个节点仅被访问一次的过程。请注意,现在还没有说到树的物理存储结构,所说的遍历都是逻辑结构上的遍历。
1.2 遍历的重要性
遍历是最基本的运算,是树中所有其他运算的基础。
1.3 遍历的分类
树的分类方式可以分为两种,一种是深度遍历方式 DFS,一种是广度遍历方式 BFS(层次遍历方式)。
深度遍历是一种使用固定规则,从根节点出发以遍历每条子树从而遍历完整棵树的方式。 前面说了树是可以递归的,当从根出发时候,就会形成对子树的递归。
而层次遍历方式更好理解,从上而下一层一层的遍历即可。
2. 深度遍历方式
2.1 前序(根)遍历
树的前序遍历指的是对树按照根、子树的规律进行访问。所谓的前,就是先把根放在前面。
例如对上图进行前序遍历,按照根、左、右的规律进行访问,应该是根节点 A、分支节点 B以及其子树、分支节点 C 、分支节点 D 以及其子树的顺序。那么我们一步一步的捋清楚。
第一步:根节点 A、分支节点 B 以及其子树、分支节点 C、分支节点 D 以及其子树的顺序。
第二步:展开分支节点 B 以及其子树,这样就形成了下面的顺序
根节点 A、(节点 B,节点 E,节点 F )、分支节点 C 、分支节点 D 以及其子树的顺序。
第三步:展开分支节点 D 以及其子树,这样就形成了下面的顺序
根节点 A、(节点 B,节点 E,节点 F )、分支节点 C 、(节点 D,节点 G )。
2.2 后序(根)遍历
树的后序遍历指的是对树按照子树、根的规律进行访问。所谓的后,就是把根放在后面。
对于上图的后序遍历得到顺序是:(节点 E、节点 F 、节点 B)、分支节点 C 、(节点 G,节点 D )、根节点 A、
3. 层次遍历方式
若树不空,则自上而下自 左至右访问树中每个节点。
对于上图的层次遍历得到顺序是:节点 A、节点 B 、节点 C、节点 D 、节点 E,节点 F 、节点 G。