二叉樹遍歷

2022-07-12 20:33:21 字數 1775 閱讀 2157

二叉樹的遍歷有三種方式,如下:

(1)前序遍歷(dlr),首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根-左-右。

(2)中序遍歷(ldr),首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左-根-右。

(3)後序遍歷(lrd),首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。簡記左-右-根。 

例1:如上圖所示的二叉樹,若按前序遍歷,則其輸出序列為      。若按中序遍歷,則其輸出序列為      。若按後序遍歷,則其輸出序列為      。

前序:根a,a的左子樹b,b的左子樹沒有,看右子樹,為d,所以a-b-d。再來看a的右子樹,根c,左子樹e,e的左子樹f,e的右子樹g,g的左子樹為h,沒有了結束。連起來為c-e-f-g-h,最後結果為abdcefgh

中序:先訪問根的左子樹,b沒有左子樹,其有右子樹d,d無左子樹,下面訪問樹的根a,連起來是bda。

再訪問根的右子樹,c的左子樹的左子樹是f,f的根e,e的右子樹有左子樹是h,再從h出發找到g,到此c的左子樹結束,找到根c,無右子樹,結束。連起來是fehgc,  中序結果連起來是bdafehgc

後序:b無左子樹,有右子樹d,再到根b。再看右子樹,最下面的左子樹是f,其根的右子樹的左子樹是h,再到h的根g,再到g的根e,e的根c無右子樹了,直接到c,這時再和b找它們其有的根a,所以連起來是dbfhgeca

例2:有下列二叉樹,對此二叉樹前序遍歷的結果為(    )。

解析:先根a,左子樹先根b,b無左子樹,其右子樹,先根d,在左子樹g,連起來是abdg。 a的右子樹,先根c,c左子樹e,e無左子樹,有右子樹為h,c的右子樹只有f,連起來是cehf。整個連起來是b答案 abdgcehf。

例3:已知二叉樹後序遍歷是dabec,中序遍歷序列是debac,它的前序遍歷序列是(       )  。

a)cedba  b)acbed c)decab d)deabc

解析:由後序遍歷可知,c為根結點,由中序遍歷可知,c左邊的是左子樹含deba,c右邊無結點,知根結點無右子樹。先序遍歷先訪問根c,答案中只有a以c開頭,為正確答案。

例4:  如下二叉樹中序遍歷的結果是(  )。

a). acbdfeg  b). acbdfge  c).abdcgef  d).fcadbeg

解析:首先中序遍歷根f會把左右子樹分開,f不會在答案的開頭和結尾,排除c和d。在看f的右子樹,g是e的右子樹,中序遍歷先訪問e,再訪問g,e在g前面,排除b。答案為a。

例5:如下二叉樹後序遍歷的結果是(  )。

解析:後序的最後乙個必須是二叉樹的根,快速判斷答案為d。

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 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 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...