二叉樹遍歷分析

2022-04-07 04:12:44 字數 1444 閱讀 8594

簡單二叉樹遍歷,可分為:先序,中序,後序。

在此分別總結先序,中序,後序的結點輸出順序。

先序: 1.訪問根結點

2.訪問左子樹

3.訪問右子樹

先序較簡單,不予以即係解釋。

中序:1.訪問左子樹

2.訪問根結點

3.訪問右子樹

原則:訪問左子樹。【先訪問左子樹中的左子樹,再訪問左子樹中的右子樹。】直到訪問到葉子結點後輸出。

輸出根。

訪問右子樹。【先訪問右子樹中的左子樹,再訪問右子樹中的右子樹。】直到訪問到葉子結點後輸出。

具體步驟如下:

a作為根。從a開始,先訪問a的左子樹。即

。在看b的左子樹,d。則輸出d。b無左子樹。訪問完b的左子樹。然後訪問b。輸出b。再看b的右子樹。f有左子樹e,則輸出e。返回輸出f。a的左子樹全部輸出完,再返回a,輸出a。

同理,看a的右子樹。

。輸出順序為g,h,c,i。

所以,中序遍歷輸出的結果為:(d b e f)a(g h c i).

後序:1.訪問左子樹

2.訪問右子樹

3.訪問根

原則:訪問左子樹。【先訪問左子樹中的左子樹,再訪問左子樹中的右子樹】。直到訪問到葉子結點後輸出。

訪問右子樹。【先訪問右子樹中的左子樹,再訪問右子樹中的右子樹】。直到訪問到葉子結點後輸出。

再返回訪問根,並輸出。

具體步驟:

先訪問a的左子樹。再訪問左子樹中的左子樹。【即:a的左子樹為b,再訪問b的左子樹d。d沒有左右子樹,輸出d。】,然後訪問左子樹中的右子樹。【即:訪問b的右子樹f,f還有左子樹,再訪問f的左子樹e,e沒有左右子樹。輸出e。再輸出f,再輸出b。】。

然後訪問a的右子樹。再訪問右子樹中的左子樹。【即:a的右子樹為c,再訪問c的左子樹g。g還有右子樹h,輸出h。再輸出g,再輸出g】,然後訪問右子樹中的右子樹。【即:訪問c的右子樹i,i沒有左右子樹,輸出i。在輸出c。再輸出a。】。

所以,後序遍歷輸出結果為:(d e f b)(h g i c)a

構建二叉樹 遍歷二叉樹

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

二叉樹遍歷

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

二叉樹遍歷

描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...