考研数据结构之树(6.4)——树和森林与二叉树的相互转换(C表示)

树转换为二叉树

森林转换为二叉树

树的遍历

树的遍历有两种方式:先序遍历和后序遍历。

先序遍历是先访问根结点,再依次访问根结点的每棵子树,访问子树时仍然遵循先根再子树的规则。

后序遍历是先依次访问根结点的每棵子树,再访问根结点,访问子树时仍然遵循先子树再根的规则。

以下图为例:

先序遍历:

  • 1)访问根结点A。
  • 2)访问A的第一棵子树,访问子树时先访问根结点B.
  • 3)访问B的第一个孩子E.
  • 4) 访问B的第二个孩子 F.
  • 5)访问A的第二棵子树,访间子树时先访问根结点C。
  • 6)访问C的第一个孩子 G.
  • 7)访间A的第三棵子树,访间子树时先访问根结点D.
  • 8)访问D的第一个孩子H。
  • 9)访问D的第二个孩子I。
  • 10)访问D的第三个孩子J。

先序遍历的结果为ABEFCGDHIJ

后序遍历:

  • 1)访问根结点A的第一棵子树,访问子树时先访问根B的第一个孩子E.
  • 2)访问B的第二个孩子F.
  • 3)访问B.
  • 4)访问A的第二棵子树,访问子树时先访问根C的第一个孩子G.
  • 5)访问C.
  • 6)访问A的第三棵子树,访问子树时先访问根D的第一个孩子H。
  • 7)访问D的第二个孩子I。
  • 8)访问D的第三个孩子J。
  • 9)访问D。
  • 10)最后访问根结点A.

后序遍历的结果为EFBGCHIJDA

树与二叉树遍历的关系:

树转换为二叉树后,树的先序遍历对应二叉树的先序遍历,树的后序遍历对应二叉树的中序遍历(注意不是后序遍历)。所以,可以将树转换为二叉树后,借助遍历二叉树的方法来遍历树。假如一棵树已经转化为二叉树来存储,要得到其先序遍历序列,只需先序遍历这棵二又树:要得到其后序遍历序列只需中序遍历这棵二叉树。

图解如下:

森林的遍历

森林的遍历方式有两种:先序遍历和后序遍历。

先序遍历的过程:先访间森林中第一棵树的根结点, 然后先序遍历第棵树中根结点的子树, 最后先序遍历森林中除了第一棵树以外的其他树。

后序遍历的过程:后序遍历第一棵树中根结点的子树, 然后访问第一棵树的根结点, 最后后序遍历森林中除去第一棵树以后的森林。

森林转换为二叉树中,森林的先序遍历对应二叉树的先序遍历,森林的后序遍历对应二叉树的中序遍历。

图解如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章