
from collections import deque
def dfs(graph, start_node):
visited = []
need_visited = deque()
# 시작 노드 설정해주기
need_visited.append(start_node)
# 방문이 필요한 리스트가 아직 존재한다면
while need_visited:
# 시작 노드를 지정
node = need_visited.pop()
# 방문 여부 확인
if node not in visited:
# 방문 처리
visited.append(node)
# 인접 노드들을 방문 예정 리스트에 추가
need_visited.extend(graph[node])
return visited
def dfs_recursive(graph, start, visited = []):
# 시작 노드 추가
visited.append(start)
for node in graph[start]:
# 방문 여부 확인
if node not in visited:
# 재귀
dfs_recursive(graph, node, visited)
return visited
출처