使用佇列進行廣度優先搜索(BFS)的原因
-
廣度優先的特性:
- 廣度優先搜索需要按層次逐層走訪樹狀結構中的節點,先走訪一層的所有節點,再走訪下一層的節點。這種先進先出的訪問順序與佇列的特性完全匹配。
-
佇列的運作機制:
- 當走訪到一個節點時,將其相鄰的節點(子節點)依次放入佇列中。
- 每次從佇列的前端取出一個節點進行走訪,然後將這個節點的子節點放入佇列的末端。
- 這樣的過程保證了每次都是先處理佇列中最早加入的節點,確保節點按照層次順序被走訪,符合廣度優先的需求。
具體操作步驟
-
初始化:
-
重複以下步驟直到佇列為空:
- 從佇列的前端取出一個節點,進行處理(例如打印節點值)。
- 將這個節點的子節點依次放入佇列的末端。
佇列(queue)因其先進先出的特性,非常適合用來實現廣度優先搜索(BFS),而堆疊(stack)則更適合深度優先搜索(DFS)。