算法導論 基本數據結構

MIT公開課沒有講到的內容,介紹幾種基本數據結構
- 棧和隊列
- 鏈表
- 二叉樹

棧和隊列

棧和隊列都是動態集合,元素的出入是規定好的。棧規定元素是先進后出(FILO),隊列規定元素是先進先出(FIFO)

棧的基本操作包括入棧push和出棧pop,棧有一個棧頂指針top,指向最新如棧的元素,入棧和出棧操作操作都是從棧頂端進行的

棧操作

隊列的基本操作包括入隊enqueue和出隊dequeue,隊列有隊頭head和隊尾tail指針。元素總是從隊頭出,從隊尾入。采用數組實現隊列時候,為了合理利用空間,可以采用循環實現隊列空間的有效利用。

隊列操作

鏈表

鏈表與數組的區別是鏈表中的元素順序是有各對象中的指針決定的,相鄰元素之間在物理內存上不一定相鄰。采用鏈表可以靈活地表示動態集合。鏈表有單鏈表和雙鏈表及循環鏈表。

雙鏈表L的每一個元素是一個對象,每個對象包含一個關鍵字和兩個指針:next和prev。鏈表的操作包括插入一個節點、刪除一個節點和查找一個節點


雙鏈表操作

二叉樹

二叉樹(Binary Tree)是一種特殊的樹型結構,每個節點至多有兩棵子樹,且二叉樹的子樹有左右之分,次序不能顛倒

二叉樹

二叉樹的性質

  1. 在二叉樹中的第i層上至多有2(i-1)個結點(i>=1)。備注:表示此方
  2. 深度為k的二叉樹至多有2^k-1個節點(k>=1)。
  3. 對任何一棵二叉樹T,如果其終端結點數目為n0,度為2的節點數目為n2,則n0=n2+1

可以采用順序存儲數組和鏈式存儲二叉鏈表兩種方法來存儲二叉樹

遍歷二叉樹
先序遍歷:先訪問根節點,然后先根遍歷左子樹,最后先根遍歷右子樹
中序遍歷:先中根遍歷左子樹,然后訪問根結點,最后中根遍歷右子樹
后序遍歷:先后根遍歷左子樹,然后后根遍歷右子樹,最后訪問根結點

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容