本身為前端工程師,因此常使用JavaScript,也因為工作環境的關係,增加了對Python的使用。許多面試會考到資料結構與演算法,而在練習刷leetcode時,也發現許多題目也要應用它們,所以這次想回歸基本面扎根,對於程式邏輯與思路才能有良好的成長。
遞迴(Recursion)的概念是將一個大的問題,分割成許多小問題去解決。而從程式設計角度來看,函式不單只能被其他函式呼叫,也能被它自己呼叫,也就是在一個函式當...
樹(Tree)屬於一種非線性結構,是一種上下階層關係,舉例: 組織架構圖、家族譜、賽程表等,類似一棵倒過來的樹,從一個樹根(root)開始向下發展許多節點(no...
二元樹(Binary Tree)是最廣泛被使用的樹狀資料結構,簡單來說即為每個節點最多只能有兩個子節點。 樹與二元樹不同之處 樹不能是空集合,二元樹可以是空...
二元樹走訪或稱二元樹遍歷,簡單來說就是走訪樹中各節點,轉化為線性關係。 主要分成兩種策略方式 深度優先搜尋(Depth-first Search,DFS)...
二元搜尋樹(Binary Search Tree),也稱有序/排序二元樹,是一種特殊二元樹結構,而節點資料的排序具備一些特性。 特性如下 左子樹任一節點的...
二元搜尋樹(Binary Search Tree)建立的方法 insert: 新增元素進入樹中 delete: 從樹中刪除此元素 preOrderTra...
堆積(Heap)是一種特別的完全二元樹,又分為最小堆積(Min-Heap)、最大堆積(Max-Heap)。 最小堆積(Min-Heap) 樹根(Root)會是...
堆積(Heap)建立的方法(以最大堆積實作) maxHeapify: 最大堆積化 push: 新增元素 pop: 刪除特定元素 popRoot: 刪除...
圖(Graph),並非多數人直接聯想到形狀或圖片,在計算機科學或離散數學中的圖,是由數個頂點Vertex(或稱節點Node)及數條邊(Edge)所構成,頂點與頂...
圖(Graph)建立的方法 addVertex: 新增頂點 addEdge: 新增邊 removeVertex: 刪除頂點 removeEdge: 刪...