【数据结构】树-树和森林的遍历(动态图解)
URLeisure的树和森林的遍历“完美”复习资料。
·
GitHub同步更新(已分类):Data_Structure_And_Algorithm-Review
公众号:URLeisure 的复习仓库
公众号二维码见文末
以下是本篇文章正文内容,下面案例可供参考。
一、树的遍历
- 树的遍历操作包括
先根遍历和后根遍历两种方式。
以下图树为例。

- 将此树转化为二叉树如图。

先序遍历:
A B E F C D G I H ABEFCDGIH ABEFCDGIH
中序遍历:
E F B C I G H D A EFBCIGHDA EFBCIGHDA
1). 先根遍历
-
如果树非空,则
先访问根节点,然后按从左向右的顺序,先跟遍历根节点的每一棵子树。(像是对树进行类似二叉树的先序遍历) -
树的先根遍历顺序与该树
对应的二叉树的先序遍历顺序相同。
(有个地方画的有点问题,但不影响观看)
先 根 遍 历 : A B E F C D G I H 先根遍历:ABEFCDGIH 先根遍历:ABEFCDGIH
2). 后根遍历
- 如果树非空,则按从左向右的顺序,后根遍历根节点的每一棵子树,
然后访问根节点。(像是对树进行类似二叉树的后序遍历步骤) - 树的后根遍历顺序与该树
对应的二叉树的中序遍历顺序相同。

后 根 遍 历 : E F B C I G H D A 后根遍历:EFBCIGHDA 后根遍历:EFBCIGHDA
二、森林的遍历
- 森林的遍历操作包括
先序遍历和中序遍历两种方式。
以下图森林为例。

- 将此森林转化为二叉树如图。

先序遍历:
A B C D E F G H J I ABCDEFGHJI ABCDEFGHJI
中序遍历:
B C D A F E J H I G BCDAFEJHIG BCDAFEJHIG
1). 先序遍历
- 如果森林非空,则
先访问第一棵树的根节点,先序遍历第一棵树的根节点的所有子树森林; - 先序遍历除第一棵树之外,剩余树构成的森林。(像是对森林进行类似二叉树的先序遍历步骤)
- 森林的先序遍历顺序与该森林
对应的二叉树的先序遍历顺序相同。
(有个地方画的有点问题,但不影响观看)

先 序 遍 历 : A B C D E F G H J I 先序遍历:ABCDEFGHJI 先序遍历:ABCDEFGHJI
2). 中序遍历
- 如果森林非空,则中序遍历第一棵树的根节点的子树森林,
然后访问第一棵树的根节点; - 中序遍历除第一棵树之外,剩余树构成的森林。(像是对森林进行类似二叉树的后序遍历步骤)
- 森林的中序遍历顺序与该森林
对应的二叉树的中序遍历顺序相同。

中序遍历:
B C D A F E J H I G BCDAFEJHIG BCDAFEJHIG
总结
树和森林的遍历与二叉树的遍历对应关系:
| 树 | 森林 | 二叉树 |
|---|---|---|
| 先根遍历 | 先序遍历 | 先序遍历 |
| 后根遍历 | 中序遍历 | 中序遍历 |
关注公众号,感受不同的阅读体验

下期预告:实现树的深度、叶子数、节点数
更多推荐


所有评论(0)