雖然曾修習過資料結構相關課程,但當時對許多概念的理解還不夠深入,因此希望藉由這次鐵人賽重新學習與整理。
本系列將從常見的資料結構開始,包括 Array、Linked List、Stack、Queue、Hash Table、Tree、Heap、Graph 等主題,重新理解各種資料結構的核心概念、特性、使用情境,以及時間複雜度等相關知識。
希望透過 30 天的整理與複習,不只是重新記住內容,而是能真正理解資料結構背後的思考方式,並建立更扎實的程式設計基礎。
想像大家排隊買票:先到的人先買,後來的人排到隊伍最後面。資料結構裡的**佇列(queue)**也是這樣運作:先放進去的資料,會先被取出來。這剛好和上一篇的堆疊相...
陣列版的堆疊和佇列會先準備一段連續空間,資料放進預留的位置。今天改用鏈結串列:每筆資料各自放在一個節點裡,再用指標把節點接起來。這種做法不必一開始決定固定容量,...
Day 13|從家族系譜認識樹與表示法 家族系譜常用一層一層分支的圖,表示世代之間的關係。資料結構中的**樹(tree)**也用這種方式呈現資料:從一個起點往下...
想像你正在闖一座迷宮:每到一個路口,最多只能選左邊或右邊。有些路口兩條路都通,有些只開一邊,走到盡頭就沒有下一個路口。把路口當成節點、路線當成連結,這種每個節點...
上一篇用陣列和鏈結把二元樹建立起來了,但要怎麼確定 A 的左邊真的接到 B、B 的右邊真的接到 D,而沒有接錯位置?最直接的檢查方法,就是從根節點出發,把樹裡的...
上一篇最後提到:如果我們只看一種走訪結果,通常無法確定一棵二元樹長什麼樣子。那反過來問,如果手上有兩種走訪結果,能不能把原本的樹畫回來?如果節點資料不重複,選用...
Day 15 用遞迴寫出了前序、中序、後序三種走訪,程式很短也很直觀。但遞迴看起來簡單,背後其實是程式偷偷幫我們記住「走完左子樹之後要回到哪一個節點」:每往下走...
從 Day 14 開始,我們一路都在處理二元樹:怎麼建立、怎麼走訪、怎麼把空指標拿來當引線。二元樹好處理,是因為每個節點最多只有左、右兩個子節點,用兩個指標就能...
前幾天我們認識了樹和二元樹的基本功:專有名詞、建立方式、走訪、引線二元樹,以及把森林轉成二元樹。從今天開始,要把這些基礎拿來應用。第一個應用是累堆(heap,也...
想像一個猜數字遊戲:對方心裡想了 1 到 100 之間的整數,每猜一次,只會回答「太大」或「太小」。聰明的猜法是先猜 50:如果對方說「太大」,代表答案在 1...