玩轉數據結構 從入門到進階

第1章 歡迎學習《玩轉數據結構》
歡迎你們學習《玩轉數據結構》課程。在這個課程中,咱們將從底層實現諸多數據結構,從簡單,到複雜,而且探索他們的應用。在這一章,咱們未來看一看數據結構的具體做用,學習數據結構的誤區,學習這個課程的注意事項,和課程環境的基本搭建:) ...
1-1 歡迎學習《玩轉數據結構》
1-2 學習數據結構(和算法)到底有沒有用?
1-3 關於課程學習的更多注意事項
1-4 課程編程環境搭建html

第2章 不要小瞧數組
數組,看似是最簡單的數據結構,可是,大多數語言爲咱們提供的都是靜態數組,如何封裝一個屬於咱們本身的動態數組,將是這一章討論的重點。同時,咱們也將探討泛型,複雜度分析,乃至複雜度的震盪,等相關高級話題
2-1 使用Java中的數組
2-2 二次封裝屬於咱們本身的數組
2-3 向數組中添加元素
2-4 數組中查詢元素和修改元素
2-5 包含,搜索和刪除
2-6 使用泛型
2-7 動態數組
2-8 簡單的複雜度分析
2-9 均攤複雜度和防止複雜度的震盪算法

第3章 棧和隊列
棧和隊列都是極其簡單的線性數據結構,其中的操做甚至都是數組操做的子集,但卻在計算機科學中有着極其重要的應用。在這一章,咱們就來探索棧和隊列的奧祕。咱們將看到使用底層數據結構搭建上層數據結構的過程,同時對於隊列,咱們也將改進底層結構,完成循環隊列的實現。...
3-1 棧和棧的應用:撤銷操做和系統棧
3-2 棧的基本實現
3-3 棧的另外一個應用:括號匹配
3-4 關於Leetcode的更多說明
3-5 數組隊列
3-6 循環隊列
3-7 循環隊列的實現
3-8 數組隊列和循環隊列的比較數據庫

第4章 最基礎的動態數據結構:鏈表
在這一章,咱們將接觸第一個動態數據結構:鏈表。咱們將經過對鏈表的底層實現,更深刻的理解對引用(或者是指針)的操做。同時,咱們也將利用鏈表,實現棧和隊列,並基於不一樣的底層實現,進行性能的比較。
4-1 什麼是鏈表
4-2 在鏈表中添加元素
4-3 使用鏈表的虛擬頭結點
4-4 鏈表的遍歷,查詢和修改
4-5 從鏈表中刪除元素
4-6 使用鏈表實現棧
4-7 帶有尾指針的鏈表:使用鏈表實現隊列編程

第5章 鏈表和遞歸
不少同窗都會忽視鏈表和遞歸之間千絲萬縷的聯繫。其實,鏈表也擁有着自然的遞歸結構。咱們在這一章,就將經過鏈表這種簡單的數據結構,一點一點爲你們揭開遞歸,這個在計算機的世界中最爲重要的邏輯構成方式的神祕面紗!...
5-1 Leetcode中和鏈表相關的問題
5-2 測試本身的Leetcode鏈表代碼
5-3 遞歸基礎與遞歸的宏觀語意
5-4 鏈表的自然遞歸結構性質
5-5 遞歸運行的機制:遞歸的微觀解讀
5-6 遞歸算法的調試
5-7 更多和鏈表相關的問題api

第6章 二分搜索樹
二分搜索樹將是咱們接觸的第一個非線性數據結構。在這一章,咱們將經過對二分搜索樹的底層實現,瞭解對樹結構的基本操做方式。同時,因爲樹結構自然的遞歸性質,咱們將在這一章,實現諸多遞歸算法,進一步理解遞歸的奧妙。...
6-1 爲何要研究樹結構
6-2 二分搜索樹基礎
6-3 向二分搜索樹中添加元素
6-4 改進添加操做:深刻理解遞歸終止條件
6-5 二分搜索樹的查詢操做
6-6 二分搜索樹的前序遍歷
6-7 二分搜索樹的中序遍歷和後序遍歷
6-8 深刻理解二分搜索樹的前中後序遍歷
6-9 二分搜索樹前序遍歷的非遞歸實現
6-10 二分搜索樹的層序遍歷
6-11 刪除二分搜索樹的最大元素和最小元素
6-12 刪除二分搜索樹的任意元素
6-13 更多二分搜索樹相關話題數組

第7章 集合和映射
在這一章,咱們將綜合以前學習的數組,鏈表和二分搜索樹,探索更加高層的數據結構應用:集合(Set)和映射(Map)。經過這一章的學習,咱們將對二分搜索樹的複雜度分析,有更加感性的認識,同時看到二分搜索樹的巨大優點,以及相應的侷限性。...
7-1 集合基礎和基於二分搜索樹的集合實現
7-2 基於鏈表的集合實現
7-3 集合類的複雜度分析
7-4 _Leetcode中的集合問題和更多集合相關問題
7-5 映射基礎
7-6 基於鏈表的映射實現
7-7 基於二分搜索樹的映射實現
7-8 映射的複雜度分析和更多映射相關問題
7-9 Leetcode上更多集合和映射的問題安全

第8章 優先隊列和堆
在這一章,咱們將探索一種特殊的樹結構——堆。學習完這一章,同窗們將對堆的相關操做有深刻的認識,甚至達到白板編程的程度。同時,咱們也將拓寬對隊列的認識,理解什麼是廣義隊列,什麼是優先隊列。
8-1 什麼是優先隊列
8-2 堆的基礎表示
8-3 向堆中添加元素和Sift Up
8-4 從堆中取出元素和Sift Down
8-5 Heapify 和 Replace
8-6 基於堆的優先隊列
8-7 Leetcode上優先隊列相關問題
8-8 Java中的PriorityQueue
8-9 和堆相關的更多話題和廣義隊列數據結構

第9章 線段樹
線段樹是一種特殊的樹結構。這種數據結構主要用於解決「線段」或者是「區間」這種特殊的數據,是算法競賽中的常客。在這一章,咱們將從底層實現屬於咱們本身的線段樹,完成線段樹的建立,查詢,更新三個操做,而且經過實際比較,看到線段樹解決「線段」相關問題的巨大優點。 ...
9-1 什麼是線段樹
9-2 線段樹基礎表示
9-3 建立線段樹
9-4 線段樹中的區間查詢
9-5 Leetcode上線段樹相關的問題
9-6 線段樹中的更新操做
9-7 更多線段樹相關的話題函數

第10章 Trie
Trie將是咱們學習的第一個,也是惟一一個多叉樹結構。Trie用於高效的處理字符串相關的查詢問題,咱們將看到,使用Trie,對字符串的查詢效率,將和字符串的多少無關!這樣的效率提高,將絕對震驚你的老闆和同事!
10-1 什麼是Trie字典樹
10-2 Trie字典樹基礎
10-3 Trie字典樹的查詢
10-4 Trie字典樹的前綴查詢
10-5 Trie字典樹和簡單的模式匹配
10-6 Trie字典樹和字符串映射
10-7 更多和Trie字典樹相關的話題
10-8 基於哈希表或者數組的Trie性能

第11章 並查集
並查集是一種奇怪的樹結構。在並查集中,不是父親指向孩子,而是孩子指向父親。這樣的一種奇怪結構,卻能出奇快的解決集合相關的合併和查詢問題。在這一章,咱們將連續優化咱們的並查集,釋放出並查集的最大能量!
11-1 什麼是並查集
11-2 Quick Find
11-3 Quick Union
11-4 基於size的優化
11-5 基於rank的優化
11-6 路徑壓縮
11-7 更多和並查集相關的話題

第12章 AVL
咱們在這一章將學習最爲經典的平衡二叉樹:AVL樹。咱們將深刻理解AVL樹中的旋轉操做。最後,咱們也將看到,使用咱們本身實現的AVL樹,在極端狀況下,相較普通的二分搜索樹,性能巨大的提高。
12-1 平衡樹和AVL
12-2 計算節點的高度和平衡因子
12-3 檢查二分搜索樹性質和平衡性
12-4 旋轉操做的基本原理
12-5 左旋轉和右旋轉的實現
12-6 LR 和 RL
12-7 從AVL樹中刪除元素
12-8 基於AVL樹的集合和映射

第13章 紅黑樹
沒有紅黑樹,可能就沒有數據庫到今天的發展。紅黑樹更是全部語言中樹結構的首選底層實現。在這一章,咱們將從2-3樹入手,帶領你們理解2-3樹和紅黑樹的等價性,進而深刻理解紅黑樹的各項操做。你們將看到,紅黑樹雖然複雜,但有規律的去理解,也能輕鬆拿下!...
13-1 紅黑樹與2-3樹
13-2 2-3樹的絕對平衡性
13-3 紅黑樹與2-3樹的等價性
13-4 紅黑樹的基本性質和複雜度分析
13-5 保持根節點爲黑色和左旋轉
13-6 顏色翻轉和右旋轉
13-7 紅黑樹中添加新元素
13-8 紅黑樹的性能測試
13-9 更多和紅黑樹相關的話題
13-10 對於紅黑樹,任何不平衡都會在三次旋轉內解決?

第14章 哈希表
在數據結構的世界裏,哈希表可謂影響深遠。哈希的應用早就遠遠超越了數據存儲,在安全領域發揮着重要的做用。就連」區塊鏈「這種魔法黑科技,都離不開哈希的影子。在這一章,咱們將具體的看一看,到底什麼是哈希表,哈希表比起以前學習的數據結構,到底有怎樣的優點。...
14-1 哈希表基礎
14-2 哈希函數的設計
14-3 Java中的 hashCode 方法
14-4 鏈地址法 Separate Chaining
14-5 實現屬於咱們本身的哈希表
14-6 哈希表的動態空間處理與複雜度分析。
14-7 哈希表更復雜的動態空間處理方法
14-8 更多哈希衝突的處理方法

第15章 結尾語
經過這個課程的學習,同窗們已經掌握了至關多的數據結構。能夠說是數據結構領域的」小牛「了。但願經過這個課程的學習,你們更掌握了研究數據結構的方法,經過本身的努力,向數據結構領域的」大神「進軍。你們加油! ...
15-1 更廣闊的數據結構的世界,你們加油!

下載地址:百度網盤下載

相關文章
相關標籤/搜索