二叉樹及遍歷總結

前言

因爲最近一直在忙目標檢測這塊的項目,一直沒有時間靜下心來總結經典算法之一:二叉樹。下面我會給你們介紹二叉樹的定義以及其應用,方便你們加深對該算法的理解。html

1. 二叉樹

二叉樹是一種特殊的樹,它具備如下特色算法

1.樹中每一個節點最多隻能有兩棵樹,即每一個節點的度最多爲2。   spa

2.二叉樹的子樹有左右之分,即左子樹右子樹,次序不能顛倒。   htm

3.二叉樹即便只有一個子樹時,也要區分是左子樹仍是右子樹。blog

2. 二叉樹的遍歷

如下遍歷以該二叉樹爲例:隊列

2.1 前序遍歷

思想:先訪問根節點,再先序遍歷左子樹,而後再先序遍歷右子樹。總的來講是根—左—右.上圖先序遍歷結果爲爲:1,2,4,8,9,5,3,6,7get

2.2 中序遍歷

思想:先中序訪問左子樹,而後訪問根,最後中序訪問右子樹。總的來講是左—根—右,上圖中序遍歷結果爲爲:8,4,9,2,5,1,6,3,7class

2.3 後序遍歷

思想:前後序訪問左子樹,而後後序訪問右子樹,最後訪問根。總的來講是左—右—根,上圖後序遍歷結果爲爲:8,9,4,5,2,6,7,3,1二叉樹

2.4 層次遍歷(寬度優先遍歷)

思想:利用隊列,依次將根,左子樹,右子樹存入隊列,按照隊列先進先出規則來實現層次遍歷。上圖後序遍歷結果爲爲:1,2,3,4,5,6,7,8,9遍歷

2.5 深度優先遍歷

思想:利用,先將根入棧,再將根出棧,並將根的右子樹,左子樹存入棧,按照先進後出規則來實現深度優先遍歷。上圖後序遍歷結果爲爲:1,2,4,8,9,5,3,6,7

 

 

參考鏈接:http://www.javashuo.com/article/p-plrhlcmv-gx.html

相關文章
相關標籤/搜索