二叉樹系列(一):已知先序遍歷序列和中序遍歷序列,求后序遍歷序列


  首先介紹一下三種遍歷順序的操作方法:

  1.先序遍歷

  (1)訪問根結點;

  (2)先序遍歷左子樹;

  (3)先序遍歷右子樹。

  2.中序遍歷

  (1)中序遍歷左子樹;

  (2)訪問根結點;

  (3)中序遍歷右子樹。

  3.后序遍歷

  (1)后序遍歷左子樹。

  (2)后序遍歷右子樹;

  (3)訪問根結點。

  知道了二叉樹的三種遍歷規則。僅僅要有中序遍歷序列和前后任一種遍歷序列,我們就能夠求出第三種遍歷序列。今天我們研究的是已知先序和中序遍歷序列。求后序遍歷序列。

  已知該二叉樹的先序遍歷序列為:A-B-D-E-G-C-F,中序遍歷序列為:D-B-G-E-A-C-F。

  接下來我們就能夠求出該二叉樹的后序遍歷序列。詳細過程例如以下:

  第一步:先求root根節點,依據先序遍歷規則我們可知root為先序遍歷序列的第一個節點,因此該二叉樹的root節點為A。

  第二步:求root的左子樹和右子樹,這點我們能夠從中序遍歷序列中找出,位於root節點A左側的D-B-G-E為root的左子樹,位於A右側的C-F為右子樹。

  第三步:求root的左孩子leftchild和右孩子rightchild,leftchild為左子樹的根節點。rightchild為右子樹的根節點。我們能夠找到左子樹D-B-E-G在先序遍歷序列中的排列順序為B-D-E-G。因為先序遍歷首先訪問根節點。所以B為左子樹的根節點。即B為root的leftchild。同理root的rightchild為C。

  第四步:我們能夠依據上面的步驟找到B的左子樹和右子樹,以及C的左子樹和右子樹,然后分別求出左右子樹的根節點。以此類推。僅僅要求出根節點及其leftchild和rightchild,剩下的過程都是遞歸的。最后我們就能夠還原整個二叉樹。

  依據以上步驟我們求出的二叉樹例如以下圖所看到的:

 

  最后我們就能夠依據興許遍歷規則得出該二叉樹的興許遍歷序列為:D-G-E-B-F-C-A。

  還有一種情況為已知中序和后序遍歷序列求先序遍歷序列。我們將分別在后面的博客中介紹。

                     ————————未完。待續。。。————————

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM