二叉樹遍歷理解

2022-10-11 10:18:11 字數 1142 閱讀 9588

口訣:

前序遍歷:根結點 ---> 左子樹 ---> 右子樹

中序遍歷:左子樹---> 根結點 ---> 右子樹

後序遍歷:左子樹 ---> 右子樹 ---> 根結點

層次遍歷:僅僅需按層次遍歷就可以

二叉樹的遍歷,是從左到右的,前、中、後這三個字代表著根結點的位置(其實也是最終根結點的位置)。

再次看到前序遍歷,「前」就代表根結點在前,然後從左到右,就是:根結點——左子樹——右子樹

層次遍歷就不詳細講解了,從上往下就ok了,結果是:abcdefghi

1、前序遍歷思考方式:根——左——右。a,然後是左子樹b,但是b也有左子樹,此時把b再當成根,下一步應該是根b-左d-右e。到這,我們確定了a-b,由於d還有子樹,到達d時,我們要重新統計根d-左h-右i,由於 h、i沒有子樹,這一步我們的順序擴大到:a-b-d-h-i,d的子樹已遍歷,這時繼續走根b-左d-右e,所以順序後新增e,以此類推,補完整個結構,最後結果為:a-b-d-h-i-e-c-f-g。

2、中序遍歷思考方式:左——根——右。此時起點是最左邊的左子樹h,左h-根d-右i,這個時候,我繼續前序遍歷的思考方式,得出的結果卻是:h-d-b-a-i-e-f-c-g,而且中間邏輯有點詭異。這是為什麼呢?急於獲得答案,我先根據正確結果得結出乙個規律:從上往下找,可以用前序的那種思維模式,每一步都是新起點,從下往上,是把它們這一部分作為乙個整體,需要走完,才能往上找,如:d、h、i看成乙個d點,d內的順序(中序)是h-d-i,這時再把d當作左子樹,繼續遍歷。按照規律,h-d-i(d點的內部順序),d-b-e(b點的內部順序),最後找出的順序:h-d-i-b-e-a-f-c-g。

3、後序遍歷思考方式:後序遍歷,又叫後根遍歷。

遍歷順序:左子樹 -> 右子樹 -> 根;左——右——根。結合中序得出的規律,把h-i-d看作d點的內部順序,最後查詢結果為:h-i-d-e-b-f-g-c-a。

先遍歷左子樹,然後遍歷右子樹,最後訪問根節點;同樣,在遍歷左右子樹的時候同樣要先遍歷左子樹,然後遍歷右子樹,最後訪問根節點。前圖後序遍歷結果如下。

總規律:上到下,新起點。下到上,根為口。(這個口是介面,介面內的東西,自己有順序,整個介面再和外面排序)

c 實現二叉樹 二叉樹遍歷徹底理解

本來只是乙個複習的,但是為了能系統的理解性複習所以在此花了一段時間來寫這個博文,同時為了貢獻自己的知識,讓那些初學者徹底理解遞迴呼叫,寫了寫自我的理解。一直受那句的影響 只有對乙個知識和技術有足夠的理解後,才能寫出簡單易懂的教程。1.二叉樹的實現 二叉樹的插入 首先給乙個初始節點,接下來 如果插入的...

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹遍歷

二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...