Algorithm, DFS


🍁 What is DFS(Depth-First Search)🤔?
グラフ#グラフ#のナビゲーション方法(最初の頂点からグラフィックに存在するすべての頂点を一度参照)で、特定のノードから次の四半期まで全面的にナビゲートする方法.
🍁 DFSの使用方法
スタックまたは再帰関数による実装
🍁 スタックのDFSの使用
func dfs(_ graph: [String: [String]], start: String) -> [String] {
    var visited = [String]()
    var stack = [String]()
    stack.append(start)
    while !stack.isEmpty {
    	let node = stack.removeLast()
    	if visited.contains(node) {
    	      continue
    	}
        visited.append(node)
    	stack += graph[node] ?? []
    }
    return visited
}
🍁 再帰関数を使用したDFS
var visited = [String]()
func dfs(_ graph: [String: [String]], start: String) {
    if visited.contains(start){
        return
    }
    visited.append(start)
    for node in graph[start] {
        dfs(graph, start: node)
    }
}