Pseudo Code
Coddy의 깊이 우선 탐색 - 그래프 알고리즘 코스 레슨 — 9개 중 4번째.
buildAdjacency(n, edges):
adj = n empty lists
for each pair (u, v) in edges:
adj[u].add(v)
adj[v].add(u) # undirected
sort every adj[i] ascending
dfs(n, edges, start):
build adjacency
visited = all false
stack = [start]
order = []
while stack not empty:
node = stack.pop()
if visited[node]: continue
visited[node] = true
order.add(node)
for nb in adj[node] from last to first:
if not visited[nb]: stack.push(nb)
return order- 인접 리스트는 평면적인 간선 배열을 각 정점에 대해 정렬된 이웃 리스트로 변환합니다.
- 이웃들을 마지막부터 처음 순서로(last-to-first) 스택에 넣으면 스택이 가장 작은 이웃을 먼저 반환하게 되어 방문 순서가 결정론적으로 유지됩니다.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
깊이 우선 탐색 - 그래프 알고리즘의 모든 레슨
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)