簡單二叉樹遍歷,可分為:先序,中序,後序。
在此分別總結先序,中序,後序的結點輸出順序。
先序: 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 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...