树和森林的遍历

二叉树遍历有 前/中/后序 + 层次,那么树和森林的遍历是怎么进行的呢?其与对应的二叉树的遍历有什么联系呢?

树的遍历

对于一棵树,根结点 + 子树(从左到右)(子树又为 根结点 + 子树)。因此有两种访问:

1、先访问根,再依次访问子树 – 先根遍历

2、先依次访问子树,再访问根 – 后根遍历

注意:没有中根遍历了哦,因为树的度可能超过2,不遵循左根右的中根遍历如图:

先根遍历

树的先根遍历和其对应的二叉树的先序遍历序列是一样的。如图:


后根遍历

树的后根遍历与其对应的二叉树的中序遍历序列一致。如图:


森林的遍历

森林是如何遍历的呢? 对森林中的各棵树从左到右进行前根遍历 或者 后根遍历 即得到 森林的先序遍历和中序遍历。

先序遍历

森林的先序遍历和其对应的二叉树的先序遍历序列一致。如图:


中序遍历(也可以称为后序遍历)

该遍历由于理解角度不同,称为森林的中序遍历或者森林的后序遍历都行

1、将第一棵树的子树看作左,将第一棵树的根节点看作根,将剩余树看作右,则可以理解为根的中序遍历。

2、由于是对森林的每棵树作后根遍历得到,因此称为森林的后序遍历也理所当然(毕竟每棵树的根都是最后遍历的)。

不管从何角度理解,最终的森林的中(后)序遍历是一致的,阿Q在这就理解为森林的中序遍历吧。

森林的中序遍历和其对应的二叉树的中序遍历序列一致。如图:

总结

  • 树的先根遍历和其对应的二叉树的先序遍历一致;
  • 树的后根遍历和其对应的二叉树的中序遍历一致;
  • 森林的先序遍历和其对应的二叉树的先序遍历一致;
  • 森林的中序遍历和其对应的二叉树的中序遍历一致。

因此:对树和森林的遍历 可以将其转化为相应的二叉树再进行遍历。

阿Q:掌握二叉树,即掌握了森林和树。

评论

发送评论 编辑评论


上一篇
下一篇