二叉樹遍歷解析

一、簡述

今天來總結下二叉樹前序、中序、後序遍歷相互求法,即如果知道兩個的遍歷,如何求第三種遍歷方法,畫出來二叉樹,然後根據各種遍歷不同的特性來求,下面我們分別說明。

首先,我們看看前序、中序、後序遍歷的特性: 
前序遍歷: 訪問順序:根>>左子樹>>右子樹 
中序遍歷: 訪問順序:左子樹>>>>右子樹 
後序遍歷: 訪問順序:左子樹>>右子樹>>根

二、示例

1、已知前序、中序遍歷,求後序遍歷
例:前序遍歷:GDAFEMHZ

       中序遍歷:ADEFGHMZ
步驟:
第一步,根據前序遍歷的特點,我們知道根結點爲G
第二步,觀察中序遍歷ADEFGHMZ。其中root節點G左側的ADEF必然是root的左子樹,G右側的HMZ必然是root的右子樹。
第三步,觀察左子樹ADEF,左子樹的中的根節點必然是大樹的root的左子節點。在前序遍歷中,大樹的root的左子節點位於root之後,所以左子樹的根節點爲D。
第四步,同樣的道理,root的右子樹節點HMZ中的根節點也可以通過前序遍歷求得。在前序遍歷中,一定是先把root和root的所有左子樹節點遍歷完之後纔會遍歷右子樹,並且遍歷的左子樹的第一個節點就是左子樹的根節點。同理,遍歷的右子樹的第一個節點就是右子樹的根節點。
第五步,觀察發現,上面的過程是遞歸的。先找到當前樹的根節點,然後劃分爲左子樹,右子樹,然後進入左子樹重複上面的過程,然後進入右子樹重複上面的過程。最後就可以還原一棵樹了。


二、已知中序和後序遍歷,求前序遍歷
依然是上面的題,這次我們只給出中序和後序遍歷:
中序遍歷:       ADEFGHMZ
後序遍歷:       AEFDHZMG
步驟:
第一步,根據後序遍歷的特點,我們知道後序遍歷最後一個結點即爲根結點,即根結點爲G。
第二步,觀察中序遍歷ADEFGHMZ。其中root節點G左側的ADEF必然是root的左子樹,G右側的HMZ必然是root的右子樹。
第三步,觀察左子樹ADEF,左子樹的中的根節點必然是大樹的root的左子節點。在前序遍歷中,大樹的root的左子節點位於root之後,所以左子樹的根節點爲D。
第四步,同樣的道理,root的右子樹節點HMZ中的根節點也可以通過前序遍歷求得。在前後序遍歷中,一定是先把root和root的所有左子樹節點遍歷完之後纔會遍歷右子樹,並且遍歷的左子樹的第一個節點就是左子樹的根節點。同理,遍歷的右子樹的第一個節點就是右子樹的根節點。
第五步,觀察發現,上面的過程是遞歸的。先找到當前樹的根節點,然後劃分爲左子樹,右子樹,然後進入左子樹重複上面的過程,然後進入右子樹重複上面的過程。最後就可以還原一棵樹了。

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