二叉樹的先序 中序 後序遍歷

2021-09-08 04:12:37 字數 707 閱讀 9876

記得有次被別人問起二叉樹的先序遍歷,竟然不清楚?當然讀書的時候是知道的,工作後有點忘了,只知道它是利用棧遞迴遍歷的,至於這裡的先序的「先」,到底指的是先遍歷左子樹還是先遍歷根節點給忘了。

為加深印象,今天打算做個小小的總結,先不管工作上有沒用到(其實是有用到的,比如樓主曾經做二值影象連通演算法的時候,需要對圖進行遍歷,可使用深度或廣度,與二叉樹的遍歷思想類似),畢竟面試的時候,這個知識點還是會經常問起的,如果不知道,未免略顯尷尬。

盡量簡單點,也不說那麼多概念了,二叉樹的遍歷分為兩種:深度優先遍歷和廣度優先遍歷;深度優先遍歷又分為三種,先序、中序和後序。

這裡,我們就不細寫具體的實現**了,理解其思想就好,所有例子都是基於以下樹進行遍歷的。

先序遍歷:根節點,左子樹,右子樹

結果:124563

中序遍歷:左子樹,根節點,右子樹

結果:425613

後序遍歷:左子樹,右子樹,根節點

結果:465231

關於先序、中序、後序遍歷,我只說一點:就是這裡的先、中、後指的是根節點,根節點,根節點。。。。

很簡單,結果為:123456

補充一下:廣度優先遍歷又叫層次遍歷,感覺這個名字更加形象點,另外,每次遍歷完乙個節點會將它的子節點做入隊操作。

以上個人理解:有錯誤請指正

二叉樹先序 中序 後序遍歷

題目 用遞迴和非遞迴方式,分別按照二叉樹先序 中序和後序列印所有的節點。我們約定 先序遍歷順序為根 左 右 中序遍歷順序為左 根 右 後序遍歷順序為左 右 根。遞迴實現 遞迴遍歷二叉樹 先序 public void preorderrecur node head system.out.println...

二叉樹先序遍歷 中序遍歷 後序遍歷

輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。非建二叉樹版本 include includeusing namespace std string preord,inord void rebuild int preleft,int preright,int inleft,int ...

二叉樹先序遍歷 後序遍歷 中序遍歷

從根部 a 開始,然後開始遍歷左子樹,直接找到 b 檢視 b 有沒有左子樹,有 d,再檢視 d 有沒有子樹,沒有,d 已經是葉子,所以第二個是 d。倒回去,取中 b,第三個數是 b。檢視 b 有沒有右子樹,有 e 檢視 e 有沒有子樹,有 g 左 h 右 所有後面三個數是 egh 先查左子樹,存在繼...