樹 (Tree)
樹 (Tree) 是圖論中極為重要的一環,它是一種沒有環的連通圖,許多演算法競賽題目都圍繞著樹的性質設計。本章節將從樹的定義開始,深入探討二元樹的特性、如何走訪一棵樹,以及如何求解樹直徑等經典問題。
1. 樹的概念#
介紹樹的基本定義(節點、邊、根、葉)、有根樹與無根樹的區別,以及如何在程式中儲存一棵樹。
2. 二元樹#
深入探討二元樹 (Binary Tree) 的特殊性質,包含陣列儲存法以及前序、中序、後序走訪的概念。
3. 樹直徑#
介紹樹直徑(Tree Diameter)的定義,並學習如何透過兩次 DFS 演算法來求出樹上最遠兩點的距離。
4. 樹的走訪#
學習如何透過 DFS 與 BFS 遍歷樹狀結構,並介紹如何在 DFS 過程中維護路徑資訊與回滾 (Rollback) 技巧。