樹的前序遍歷、中序遍歷、後序遍歷詳解

1.前序遍歷

圖1

對於當前節點,先輸出該節點,而後輸出他的左孩子,最後輸出他的右孩子。以上圖爲例,遞歸的過程以下:
(1):輸出 1,接着左孩子;
(2):輸出 2,接着左孩子;
(3):輸出 4,左孩子爲空,再接着右孩子;
(4):輸出 6,左孩子爲空,再接着右孩子;
(5):輸出 7,左右孩子都爲空,此時 2 的左子樹所有輸出,2 的右子樹爲空,此時 1 的左子樹所有輸出,接着 1 的右子樹;
(6):輸出 3,接着左孩子;
(7):輸出 5,左右孩子爲空,此時 3 的左子樹所有輸出,3 的右子樹爲空,至此 1 的右子樹所有輸出,結束。spa

2.中序遍歷

對於當前結點,先輸出它的左孩子,而後輸出該結點,最後輸出它的右孩子。以上圖爲例:
(1):1-->2-->4,4 的左孩子爲空,輸出 4,接着右孩子;
(2):6 的左孩子爲空,輸出 6,接着右孩子;
(3):7 的左孩子爲空,輸出 7,右孩子也爲空,此時 2 的左子樹所有輸出,輸出 2,2 的右孩子爲空,此時 1 的左子樹所有輸出,輸出 1,接着 1 的右孩子;
(4):3-->5,5 左孩子爲空,輸出 5,右孩子也爲空,此時 3 的左子樹所有輸出,而 3 的右孩子爲空,至此 1 的右子樹所有輸出,結束。orm

3.後序遍歷

對於當前結點,先輸出它的左孩子,而後輸出它的右孩子,最後輸出該結點。依舊以上圖爲例:
(1):1->2->4->6->7,7 無左孩子,也無右孩子,輸出 7,此時 6 無左孩子,而 6 的右子樹也所有輸出,輸出 6,此時 4 無左子樹,而 4 的右子樹所有輸出,輸出 4,此時 2 的左子樹所有輸出,且 2 無右子樹,輸出 2,此時 1 的左子樹所有輸出,接着轉向右子樹;
(2):3->5,5 無左孩子,也無右孩子,輸出 5,此時 3 的左子樹所有輸出,且 3 無右孩子,輸出 3,此時 1 的右子樹所有輸出,輸出 1,結束。blog

4.根據前序遍歷中序遍歷推導樹的結構

已知:
前序遍歷: GDAFEMHZ
中序遍歷: ADEFGHMZ
求後序遍歷
首先,要先畫出這棵二叉樹,怎麼畫呢?根據上面說的咱們一步一步來……
1.先看前序遍歷,前序遍歷第一個必定是根節點,那麼咱們能夠知道,這棵樹的根節點是G,接着,咱們看中序遍歷中,根節點必定是在中間訪問的,那麼既然知道了G是根節點,則在中序遍歷中找到G的位置,G的左邊必定就是這棵樹的左子樹,G的右邊就是這棵樹的右子樹了。
2.咱們根據第一步的分析,大體應該知道左子樹節點有:ADEF,右子樹的節點有:HMZ。同時,這個也分別是左子樹和右子樹的中序遍歷的序列。
3.在前序遍歷遍歷完根節點後,接着執行前序遍歷左子樹,注意,是前序遍歷,什麼意思?就是把左子樹當成一棵獨立的樹,執行前序遍歷,一樣先訪問左子樹的根,由此能夠獲得,左子樹的根是D,第2步咱們已經知道左子樹是ADEF了,那麼在這一步獲得左子樹的根是D,請看第4步。
4.從第2步獲得的中序遍歷的節點序列中,找到D,發現D左邊只有一個A,說明D的左子樹只有一個葉子節點,D的右邊呢?咱們能夠獲得D的右子樹有EF,再看前序遍歷的序列,發現F在前,也就是說,F是先前序遍歷訪問的,則獲得E是F的左子樹,只有一個葉子節點。
5.到這裏,咱們能夠獲得這棵樹的根節點和左子樹的結構了。以下圖:遞歸

6.接着看右子樹,在第2步的右子樹中序遍歷序列中,右子樹是HMZ三個節點,那麼先看前序遍歷的序列,先出現的是M,那麼M就是右子樹的根節點,恰好,HZ在M的左右,分別是它的左子樹和右子樹,所以,右子樹的結構就出來了:io


7.到這裏,咱們能夠獲得整棵樹的結構:form

5.根據樹的中序遍歷後序遍歷推導樹的結構

中序遍歷:ADEFGHMZ
後序遍歷:AEFDHZMGclass

1..根據後序遍歷的特色(左右中),根節點在結尾,肯定G是根節點。根據中序遍歷的特色(左中右),肯定ADEF組成左子樹,HMZ組成右子樹。file

2.分析左子樹。ADEF這四個元素在後序遍歷(左右中)中的順序是AEFD,在中序遍歷(左中右)中的順序是ADEF。根據後序遍歷(左右中)的特色肯定D是左子樹的節點,根據中序遍歷(左中右)的特色發現A在D前面,因此A是左子樹的左葉子,EF則是左子樹的右分枝。
EF在後序(左右中)和中序(左中右)的相對位置是同樣的,因此EF關係是左右或者左中,排除左右關係(缺少節點),因此EF關係是左中。
到此得出左子樹的形狀二叉樹


3.分析右子樹。HMZ這三個元素在中序遍歷(左中右)的順序是HMZ,在後序遍歷(左右中)的順序是HZM。根據後序遍歷(左右中)的特色,M在尾部,即M是右子樹的節點。再根據中序遍歷(左中右)的特色,肯定H(M的前面)是右子樹的左葉子,Z(M的後面)是右子樹的右葉子。遍歷

因此右子樹的形狀

  1. 最後得出整棵樹的形狀
原文地址:https://www.jianshu.com/p/1c50b23fcc30
相關文章
相關標籤/搜索