徹底弄懂二叉樹的先序、中序、後序三種遍歷與做題

最近有同學考計算機二級不懂樹遍歷的計算,就找上我解惑。作爲老好人的博主的我,但是義不容辭的上來闡述了一番。

先來官方的概念:

樹的遍歷:是指對樹中所有結點信息的訪問,即依次對樹中每個結點的訪問一次且僅訪問一次。
分爲:先序遍歷,後序遍歷,層次遍歷。(普通的樹是沒有中序遍歷的)

這裏我們說一下二叉樹的遍歷:

二叉樹的遍歷分成三種,按照根節點的訪問先後分爲:
先序遍歷(先根遍歷):先訪問根節點,然後訪問左子樹, 最後訪問右子樹。
中序遍歷(中根遍歷):先訪問左子樹,然後訪問根節點, 最後訪問右子樹。
後續遍歷(後根遍歷):先訪問左子樹,然後訪問右子樹, 最後訪問根節點

如:
在這裏插入圖片描述

先序遍歷的順序:ABC (先根節點A,在左子樹B,然後右子樹C);
中序遍歷的順序:BAC (先左子樹B,在根節點A,然後右子樹C);
後序遍歷的順序:BCA (先左子樹B,在右子樹C,然後根節點A)。

在這裏插入圖片描述
上圖二叉樹遍歷結果:

先序遍歷:ABDFCEGHI
中序遍歷:BFDACHGIE
後序遍歷:FDBHIGECA

第一種分析方法:(此處分析先序遍歷)

①:從A根節點開始,根據先序遍歷的原則:首先訪問根節點A,然後訪問它的左子樹B, 在訪問右子樹C,遍歷順序就是A->B->C
②:左子樹B 也按照先序遍歷的原則來處理, 遍歷順序就是B->D。B的右子樹也按照先序遍歷的原則,順序是D->F
,就可以得到A->B->D->F->C
③:右子樹C按照先序遍歷的原則處理,順序是C->E,同理C的子樹得遍歷順序E->G->H->I
那麼, 這棵樹先序遍歷的結果就是,A->B->D->F->C->E->G->H->I

這是遞歸思路,根據原則遍歷子樹,子樹沒了子節點遍歷完,則遍歷同深度。

第二種分析方法:(此處分析中序遍歷)

在這裏插入圖片描述

推導計算,兩種遍歷序列算出第三種序列。
在這裏插入圖片描述
記住兩點:
先序,後序遍歷可以確定根節點。
中序遍歷可以確定左子樹和右子樹。
做這種題就是,反覆來回這兩點
題目分析:

由前序遍歷知道,A是根節點。
則根據中序遍歷 知道HBDF是左子樹 EKCG是右子樹的
然後在根據前序遍歷 BHFD 知道B是左子樹的根節點 ,再根據中序遍歷知道H是左子樹,DF是右子樹,同理F是根,D是左子樹。
由此也可推出A的右子樹的結構
所有整個樹的結構是:
在這裏插入圖片描述
因此後序遍歷是:
HDFBKGCEA
答案是B

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