【数据结构】树-树和森林的遍历(动态图解)

文章目录

  • 一、树的遍历
    • 1). 先根遍历
    • 2). 后根遍历
  • 二、森林的遍历
    • 1). 先序遍历
    • 2). 中序遍历
  • 总结

GitHub同步更新(已分类):Data_Structure_And_Algorithm-Review

公众号:URLeisure 的复习仓库
公众号二维码见文末

以下是本篇文章正文内容,下面案例可供参考。


一、树的遍历

  • 树的遍历操作包括先根遍历后根遍历两种方式。

以下图树为例。

【数据结构】树-树和森林的遍历(动态图解)_第1张图片

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

【数据结构】树-树和森林的遍历(动态图解)_第2张图片

先序遍历:
A B E F C D G I H ABEFCDGIH ABEFCDGIH

中序遍历:
E F B C I G H D A EFBCIGHDA EFBCIGHDA

1). 先根遍历

  • 如果树非空,则先访问根节点,然后按从左向右的顺序,先跟遍历根节点的每一棵子树。(像是对树进行类似二叉树的先序遍历)

  • 树的先根遍历顺序与该树对应的二叉树的先序遍历顺序相同。

(有个地方画的有点问题,但不影响观看)
【数据结构】树-树和森林的遍历(动态图解)_第3张图片
先 根 遍 历 : A B E F C D G I H 先根遍历:ABEFCDGIH ABEFCDGIH

2). 后根遍历

  • 如果树非空,则按从左向右的顺序,后根遍历根节点的每一棵子树,然后访问根节点。(像是对树进行类似二叉树的后序遍历步骤)
  • 树的后根遍历顺序与该树对应的二叉树的中序遍历顺序相同。

【数据结构】树-树和森林的遍历(动态图解)_第4张图片
后 根 遍 历 : E F B C I G H D A 后根遍历:EFBCIGHDA EFBCIGHDA

二、森林的遍历

  • 森林的遍历操作包括先序遍历中序遍历两种方式。

以下图森林为例。

【数据结构】树-树和森林的遍历(动态图解)_第5张图片

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

【数据结构】树-树和森林的遍历(动态图解)_第6张图片

先序遍历:
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). 先序遍历

  • 如果森林非空,则先访问第一棵树的根节点,先序遍历第一棵树的根节点的所有子树森林;
  • 先序遍历除第一棵树之外,剩余树构成的森林。(像是对森林进行类似二叉树的先序遍历步骤)
  • 森林的先序遍历顺序与该森林对应的二叉树的先序遍历顺序相同。

(有个地方画的有点问题,但不影响观看)

【数据结构】树-树和森林的遍历(动态图解)_第7张图片
先 序 遍 历 : A B C D E F G H J I 先序遍历:ABCDEFGHJI ABCDEFGHJI

2). 中序遍历

  • 如果森林非空,则中序遍历第一棵树的根节点的子树森林,然后访问第一棵树的根节点
  • 中序遍历除第一棵树之外,剩余树构成的森林。(像是对森林进行类似二叉树的后序遍历步骤)
  • 森林的中序遍历顺序与该森林对应的二叉树的中序遍历顺序相同。

【数据结构】树-树和森林的遍历(动态图解)_第8张图片
中序遍历:
B C D A F E J H I G BCDAFEJHIG BCDAFEJHIG

总结

  • 树和森林的遍历与二叉树的遍历对应关系
森林 二叉树
先根遍历 先序遍历 先序遍历
后根遍历 中序遍历 中序遍历

关注公众号,感受不同的阅读体验

请添加图片描述

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

你可能感兴趣的:(数据结构,c++,java,图解法)