DFS는 깊이 우선 검색을 나타냅니다. 트리 또는 그래프 데이터 구조를 순회하거나 검색하는 데 사용되는 알고리즘입니다. 알고리즘은 루트라고 하는 특정 노드에서 시작하여 역추적하기 전에 각 분기를 따라 가능한 멀리 탐색합니다.
DFS는 재귀 또는 명시적 스택을 사용하여 구현할 수 있습니다. 재귀를 사용할 때 알고리즘은 방문할 노드를 기억하기 위해 호출 스택에 의존합니다. 또는 명시적 스택을 사용하여 노드를 추적할 수 있습니다.
ex)
0 > 1 > 2 > 3
2 > 4
1 > 5 > 6
0 > 7
0 > 7 > 8
7 > 9 > 10
9 > 11
9 > 12
adj = [[0] * 13 for _ in range(13)]
adj[0][1] = adj[0][7] = 1
adj[1][2] = adj[1][5] = 1
# for row in adj:
# print(row)
def dfs(now):
for nxt in range(13):
if adj[now][nxt]:
dfs(nxt)
dfs(0)