# 그래프 알고리즘
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
visited = set() # 방문한 노드를 저장할 집합
###########################
# DFS (깊이 우선 탐색) - 재귀 함수
def dfs_recursive(node):
if node not in visited:
print(node, end=' ')
visited.add(node)
for neighbor in graph[node]:
dfs_recursive(neighbor)
# 시작 노드 설정 및 함수 호출
start_node = 'A'
dfs_recursive(start_node)
###########################
# DFS (깊이 우선 탐색) - 스택 사용
def dfs_iterative(start_node):
stack = [start_node]
while stack:
node = stack.pop()
if node not in visited:
print(node, end=' ')
visited.add(node)
stack.extend(reversed(graph[node]))
# 시작 노드 설정 및 함수 호출
start_node = 'A'
dfs_iterative(start_node)
###########################
# BFS (너비 우선 탐색) - 큐를 이용한 반복 구조로 구현
from collections import deque
def bfs_iterative(start_node):
queue = deque([start_node]) # BFS 큐 초기화
while queue:
node = queue.popleft()
if node not in visited:
print(node, end=' ')
visited.add(node)
queue.extend(graph[node])
# 시작 노드 설정 및 함수 호출
start_node = 'A'
bfs_iterative(start_node)
Resource: