本次系列文為UC Berkeley的資料結構課程,課程代號CS61B,教授為Josh Hug:
https://sp19.datastructur.es/
根據Josh Hug教授的聲明,其教材為Creative Commons 4.0 BY-NC-SA license,意指其教材內容可供任何非營利用途來使用或二創,但其二創內容同樣也須為Creative Commons 4.0 BY-NC-SA license
Josh Hug教授License聲明原文:
https://joshhug.gitbooks.io/hug61b/content/
這章節要來介紹一個新的ADT(Abstract Data Type)叫做Priority Queue。 大家應該都知道Queue的特性了,就是先進先出,像我們平...
這章節會介紹一個專門來處理String的資料結構,Tries。 假如我們需要儲存String,並且要讓add, get等功能有效率,可以用什麼資料結構來儲存呢?...
目前為止我們應用樹狀結構來當作我們的資料結構實現了很多有效率的ADT(Abstract Data Type)。這章節要來探討樹狀結構的另一種作用,travers...
前面的章節談了很多tree的應用,接下來要談談另一種結構,Graph。 Graph有點類似Tree,但他比Tree的限制更少,如下面四張圖的範例: Tree有...
對比Tree Traversal的level order traversal,Graph Traversal的level order traversal稱為Br...
這章節要來點hardcore的,就是分析graph traversal的runtime。要做到這件事分3個步驟: 1.Graph API2.Graph impl...
先前介紹的BFS可以幫我們找到最短路徑,但是那是在將各個edge都視為等長的情況下,假若要多考慮edge的長度,那BFS就不夠用了。這章節我們將介紹能夠考慮ed...
接下來的章節會來討論minimum spanning tree的議題。 首先來了解一下什麼是spanning tree: 在一個graph G中,若有一個gr...
那我們到底該如何找出graph中的MST(Minimum Spanning Tree)呢? 有個最經典的Prim’s algorithm可以用來找出MST,其概...
除了Prim’s algorithm可以找出MST(Minimum Spanning Tree)外,還有一個常見的演算法叫做Kruskal’a algorith...