주제

dfs/bfs

dfs

깊이 탐색 기법 : O(N) 시간 소요

  • 스택사용

dfs

def dfs(graph, node, visited):
    visited[node] = True
    print(node, end = ' ')

    for i in graph[node]:
        if not visited[i]:
          dfs(graph, i, visited)

graph = [
    [],
    [2, 3, 8],
    [1, 7],
    [1, 4, 5],
    [3, 5],
    [3, 4],
    [7],
    [2, 6, 8],
    [1, 7]
]

visited = [False] * 9

dfs(graph, 1, visited) # 1 2 7 6 8 3 4 5

bfs

너비 탐색 기법 : O(n) 시간 소요

  • 큐 사용

bfs

from collections import deque

def bfs(graph, start, visited):
    queue = deque([start])
    visited[start] = True

    while queue:
        node = queue.popleft()
        print(node, end = ' ')

        for i in graph[node]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True
graph = [
    [],
    [2, 3, 8],
    [1, 7],
    [1, 4, 5],
    [3, 5],
    [3, 4],
    [7],
    [2, 6, 8],
    [1, 7]
]

visited = [False] * 9

bfs(graph, 1, visited) # 1 2 3 8 7 4 5 6

태그:

카테고리:

업데이트:

댓글남기기