文章出處

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

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

 

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

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

深度優先遍歷(輔助結構:棧)

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

結果:124563

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

結果:425613

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

結果:465231

關于先序、中序、后序遍歷,我只說一點:就是這里的先、中、后指的是根節點,根節點,根節點。。。。

廣度優先遍歷(輔助結構:隊列)

很簡單,結果為:123456

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

 

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


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()