資料結構 二叉樹的先序 中序 後序遍歷

2021-07-23 13:21:19 字數 1254 閱讀 9552

在軟考或者自考中,總有這類的試題

求出下圖所示的二叉樹的先序遍歷、中序遍歷和後序遍歷的節點序列

我來附上一張手繪圖(看著有點沒技術含量)

這裡你就會納悶,數字1是做什麼用的,別急,聽我下面慢慢給您解釋:

我們從a作為入口,然後把這個整個的二叉樹外圍畫一遍,從a出發,第一次遇見b,所以我們就在b的左側上數字1,然後第一次遇到c,所以我們在c的左側寫上數字1,然後遇到第一次遇到e,我們在e的左側寫上數字1,以此類推,把整個的二叉樹遍歷完全,然後我們就開始找數字1,出來的就是它的先序序列:abcedfgkh

思想:若二叉樹為空,返回,否則:

1、遍歷根節點;2、先序遍歷左子樹;3、先序遍歷右子樹,需要注意的是:遍歷左右子樹的時候仍然採用先序遍歷方法。那麼遍歷的結果就是:根--左--右

依舊手繪圖:

這裡你就會納悶,數字1是做什麼用的,別急,聽我下面慢慢給您解釋:

我們從a作為入口,然後把這個整個的二叉樹外圍畫一遍,從a出發,發現a的左右子樹都存在,那麼就在a的下方寫上乙個數字0,然後找b,b的左右子樹都存在,在b的下方協商乙個數字0,c,發現c只有左子樹沒有右子樹,那麼就在c的右邊寫上乙個數字0,然後找e,發現e沒有左右子樹,就在e的下方寫上乙個數字0,。以此類推,我們就找到了中序遍歷:ecbdagkfh

思想:1、中序遍歷左子樹;2、訪問根節點;3、中序遍歷右子樹。那麼中序遍歷的結果就是:左--根--右

依舊手繪圖

這裡你就會納悶,數字1和2是做什麼用的,別急,聽我下面慢慢給您解釋:

我們從a作為入口,然後把這個整個的二叉樹外圍畫一遍,從a出發,流入a第一次,寫上數字1,繼續走流入b第一次,所以寫上數字1,然後流入c第一次,依舊寫1,流入e第一次,寫1,然後流出e流向了c,那麼就遇到了e第二次,c第二次,所以寫上數字2,然後流入d第一次,流出d,寫上數字2,以此類推,後序遍歷:ecdbkghfa

思想:1、後序遍歷左子樹;2、後序遍歷右子樹;3、訪問根節點。所以:後序遍歷的結果是:左--右--根。

二叉樹 先序 中序 後序

同學整理的,順便傳上分享下 一,已知先序和中序 求後序 1 include2 include3 include4 using namespace std 5char s1 10 s2 10 ans 10 6 int o 0 7 void tree int n char s1 char s2 char...

中序後序,中序先序求二叉樹

用後序,中序求二叉樹 includeusing namespace std int n int a 105 b 105 mapl,r int build int la,int ra,int lb,int rb 再在中序中找到這個數的位置 if i rb return root queueq void...

構造二叉樹 先序 中序 後序 中序

牛客網 給出一棵樹的前序遍歷和中序遍歷,請構造這顆二叉樹 注意 可以假設樹中不存在重複的節點 先遍歷的第乙個數是根節點,中序遍歷的根節點左邊是左子樹,右邊是右子樹。通過先序遍歷遍歷找到根結點,通過中序中根結點的位置可以將樹劃分成兩個子樹,然後遞迴的進行呼叫即可構造好二叉樹。definition fo...