Python是最適合初學者的程式語言,原因大致為簡潔、易懂、應用多,因此我覺得大家可以藉著這個程式語言入門「資料結構」這門相對困難的學問!在鐵人賽中,我將從最簡單的列表、字典說起,再進一步到鏈結串列與二元樹的實作。為求完整,我會在其中簡單介紹Python的物件導向特性,使資料結構更清楚明瞭。
還記得佇列的特色嗎?先進到佇列的資料會優先被取出!我們稱這個性質叫「先進先出」。 之前練習過用列表實作,那我們今天就來用鏈結串列實作吧! 第一步就是實作 cl...
今天的目標就是對樹狀結構有基本的認識! 樹(Tree) vs. 圖(Graph) 一個資料結構,如果他是沒有「循環」 (Cycle) 在內的,那他可以被拉成「樹...
一個資料結構的開始,我們都是先實作他的節點類別和資料結構類別。 就先從節點類別開始吧!初始化: 資料內容為參數 所有指標初始為空 class Node:...
二元搜尋樹的特色就是任意子樹的根節點資料大於左子樹的資料,且小於左子樹的資料。 因此我們在建構二元搜尋樹的時候也要依照他的邏輯! 為求方便,我們就使用 Hack...
在介紹樹的時候,我們有提到樹的相關性質,其中,樹的高度就是其中一個。 今天的目標就是來計算樹的高度。 其實只要幾行程式碼搭配遞迴思維,就可以完成!再來就是考慮...
Linked List 的 Traversal 其實很簡單,基本上不是由前向後走,就是由後向前走。 但是,樹要怎麼被遍歷呢?每一個節點都可以分岔出數個岔路,每一...
這種遍歷法就比較好去想像,我們是一層一層的去印出節點內容 舉例來說,有一棵樹長這樣: _1_ _3_ _7_ 9 8 4 2 那經過...
今天的目標是判斷一個二元搜尋樹是否合法?(Hackerrank 上的 Is this a Binary Search Tree ? ) 二元搜尋樹不同於二元樹的...
二元樹的相關題型中,有一個題目叫 Lowest Common Ancestor 我認為是相當經典的。 題目可以參考 Hackerrank 的 Lowest Co...
30 天的時間,我從 Python 的容器開始介紹,包含 list, dictionary, set 等,Python 的特色是它提供了我們許多相關的函式、內建...