考研數據結構之樹(6.2)——如何根據前序、中序和後序遍歷還原二叉樹(C表示)

概要

前序遍歷:先訪問當前節點,再訪問當前節點的左子樹,最後訪問當前節點的右子樹。對於二叉樹,深度遍歷與此同。規律:根在前;子樹在根後且左子樹比右子樹靠前,且第一個就是根節點;

中序遍歷:先訪問當前節點的左子樹,然後訪問當前節點,最後是當前節點的右子樹,二叉樹,中序遍歷會得到數據升序效果。規律:根在中;左子樹在跟左邊,右子樹在根右邊,左邊部分是根結點的左子樹的中序遍歷序列,右邊部分是根結點的右子樹的中序遍歷序列 ;

後序遍歷:先訪問當前節點的左子樹,然後是當前節點的又子樹,最後是當前節點。規律:根在後;子樹在根前且左子樹比右子樹靠前,且最後一個節點是根節點。

注:只能根據前序和中序或者中序和後序還原二叉樹,也就是說必須要有中序。

關鍵:(1)從前序中可以得知第一個結點是根節點。(2)根據後序可以得知最後一個結點是根節點。(3)根據中序或後序得知的根節點在中序中得到其左右子樹。

前序和中序求後序及二叉樹

解題思路如下:

  1. 根據前序序列的第一個元素建立根結點;
  2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列;
  3. 在前序序列中確定左右子樹的前序序列;
  4. 由左子樹的前序序列和中序序列建立左子樹;
  5. 由右子樹的前序序列和中序序列建立右子樹。

以下題爲例:已知一棵二叉樹的先序遍歷序列和中序遍歷序列分別是abdgcefhdgbaechf,求二叉樹及後序遍歷序列。

圖解如下:

後序和中序求前序及二叉樹

解題思路如下:

  1. 根據後序序列的最後一個元素建立根結點;
  2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列;
  3. 在後序序列中確定左右子樹的後序序列;
  4. 由左子樹的後序序列和中序序列建立左子樹;
  5. 由右子樹的後序序列和中序序列建立右子樹

以下題爲例:已知一棵二叉樹的後序遍歷序列和中序遍歷序列分別是gdbehfcadgbaechf,求二叉樹及先序遍歷。

圖解如下:

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