시작 노드(루트 노드)에서부터 가까운 정점을 먼저 방문하고, 멀리 있는건 나중에 방문하는 방법.
간단히 정리해서 큐를 이용하면 BFS를 구현할 수 있다.
시작 노드를 방문 리스트, 큐에 넣는다.
def bfs_deque(start):
visited = [start]
q = deque([start])
큐가 있는 동안 반복문 실행하여 인접 노드를 탐색한다.
while q :
node = q.leftpop() # 루트노드 (시작노드)
for adj in graph[node]: # 인접노드 방문 시작
방문하지 않은 인접노드는 방문처리를하고 큐에 넣는다.
while q:
node = q.popleft()
for adj in graph[node]:
if adj not in visited:
q.append(adj)
visited.append(adj)