BFS vs DFS

背景

搜索算法的兩種思路,廣度優先(BFS)和深度優先(DFS)遍歷圖,都通過記錄已遍歷的節點避免圖中的環。

BFS

visited := make(map[Pos]bool)
stack := make([]Pos) // 下一次要遍歷的節點,空的時候結束,每次將節點周圍的節點入列。

DFS

visited := make(map[Pos]bool)

func travel(node) {
    travel(node.children)
}

通過遞歸的方式入棧子節點。