树和森林的遍历

Posted 薛定谔的猫ovo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树和森林的遍历相关的知识,希望对你有一定的参考价值。

树和森林的遍历

首先给出树和森林的遍历与二叉树遍历的对应关系:

森林二叉树
先根遍历先序遍历先序遍历
后根遍历中序遍历中序遍历

树和森林的遍历均可采用对应二叉树的遍历算法来实现。
本文只简单出给树和森林的遍历方法思想及实例。


树的遍历

 树的遍历操作就是按照某种方式访问树中的每个结点,且仅访问一次。树的遍历操作主要有先根遍历后根遍历两种方式,此外还有层次遍历


树的先根遍历

 树的先根遍历的思想:若树为空,则先访问根结点,再按从左到右的顺序遍历根结点的每棵子树。
 其访问顺序与这棵树相应二叉树的先序遍历顺序相同。

对于下面这棵树,按照其先根遍历的思想,其先根遍历序列为:A B E F C D G .

其中这棵树对应的二叉树为:具体的转换过程可参照树、森林与二叉树的相互转换

按照二叉树的先序遍历思想,这棵二叉树的先序遍历序列为:A B E F C D G .


树的后根遍历

 树的后根遍历思想:若树非空,则按从左往右的顺序遍历根结点的每棵子树,之后再访问根结点。
 其访问顺序与这棵树的相应二叉树的中序遍历顺序相同。

还是同样上面这棵树,其后根遍历序列为: E F B C G D A .

其对应的二叉树还是:

根据二叉树的中序遍历思想,这棵二叉树的中序遍历序列为:E F B C G D A .


层次遍历

 树的层次遍历与二叉树的层次遍历思想相同,即按照层序依次访问各结点。
 该树的层次遍历序列为:A B C D E F G


森林的遍历

 森林的遍历方法主要有先序遍历中序遍历两种。

森林的先序遍历

若森林为非空,则按如下规则进行遍历:
<1> 访问森林中第一棵树的根结点;
<2> 先序遍历第一棵树中根结点的子树森林;
<3> 先序遍历除去第一课树之后剩余的树构成的森林。
其访问顺序与森林相应二叉树的先序遍历顺序相同。

森林先序遍历的实例:

根据森林的先序遍历思想,可得到这个森林的先序遍历序列为: A B C D E F G H K L I J .

其相应的二叉树为:

根据二叉树的先序遍历思想,可得这个二叉树的先序遍历序列为: A B C D E F G H K L I J .


森林的中序遍历

若森林非空,则按如下规则进行遍历:
<1> 中序遍历森林中第一颗树的根结点的子树森林;
<2> 访问第一棵树的根结点;
<3> 中序遍历除去第一棵树之后剩余的树构成的森林。
其访问顺序与森林相应二叉树的中序遍历顺序相同。

还是上面那个森林:

根据森林的中序遍历思想,这个森林的中序遍历序列为: B C A F E D K L H I J G .

其对应的二叉树为:

按照二叉树的中序遍历思想,其中序遍历序列为:B C A F E D K L H I J G .

以上是关于树和森林的遍历的主要内容,如果未能解决你的问题,请参考以下文章

树的存储结构以及树和森林的遍历(C语言)

作业 树和森林 遍历(递归/非递归先序,递归/非递归后序,递归层次)

深度优先生成树和广度优先生成树(详解版)

树和森林

第五章题解

(王道408考研数据结构)第五章树-第三节4:树与二叉树的转换