(一)二叉樹的三種遍歷方式:
前序遍歷 : 1 2 4 5 3 6 7 ; 中序遍歷 : 4 2 5 1 6 3 7 ; 後序遍歷 : 4 5 2 6 7 3 1 ;
本質是在遞迴序的基礎上列印時機的不同,可以使用棧來實現三種遍歷。深度優先遍歷(dfs)
(二)各種遍歷的非遞迴實現
struct node ;
前序遍歷:
1.先定義乙個棧,把跟壓入棧 ; 2. 彈出棧頂元素,並且列印出來;3.如果彈出的棧頂元素有右節點,先將該節點壓入到棧中,如果有左節點,再後向棧中壓入左節點;中左右順序,因為是棧,所以先壓入右,後壓入左。
static void preorderunrecur(node *head)
if (head->left != nullptr)
} }}
2.後續遍歷,左中右,把前序遍歷的基礎上調整左右子樹壓入順序,期間不進行列印,並且開闢額外的棧,來儲存節點,最後統一輸出便是左右中。
3.中序遍歷:把整個樹左邊界化,從根節點開始一直沿著左樹壓入棧,如果有右子樹依然是按照左邊界的方式重複。
可以使用佇列來實現三種遍歷。廣度優先遍歷(bfs)
1.定義乙個佇列,先壓入根節點。然後分別壓入先左後右子樹,依次彈出。本例輸出:1,2,3,4,5,6,7
2.
資料結構與演算法之美
什麼是資料結構?什麼是演算法 狹義重點 複雜度分析 方法 邊學邊練,適度刷題 複雜度分析 時間複雜度 常見時間複雜度 非多項式量級 非常低效的演算法 空間複雜度 漸進空間複雜度,表示演算法的儲存空間和資料規模的增長關係 最好情況時間複雜度 理想情況的時間複雜度 最壞情況時間複雜度 最糟糕的情況下的時...
資料結構與演算法之美 開篇
資料結構與演算法,是計算機的核心課程之一,是程式設計師武功體系的內功,想成為武林高手必須內功過硬,作為乙個非科班碼農,面試時因為內功不強而碰壁數次,使我真實的體驗到學好資料結構與演算法的重要性,為了不在這個方面繼續碰壁,也為了能在軟體開發工程師的道路上走的更遠更快,我決心集中精力學習突破這道關口 以...
資料結構與演算法之美06
個人學習筆記總結,詳見資料結構與演算法之美 度娘 線性表 非線性表 陣列 1 儲存結構 鏈式儲存,前驅後繼關聯 2 操作 crud 前後索引關聯,涉及最優最糟問題 特點 非常低效 查詢操作 了解其儲存方式,即查詢就是通過陣列下標進行。插入操作 假設陣列的長度為n,現在,如果我們需要將乙個資料插入到陣...