thals0 / TIL

📚 하루동안 공부한 내용을 기록하는 공간입니다.
0 stars 0 forks source link

[Algorithm] DFS & BFS #6

Closed thals0 closed 1 year ago

thals0 commented 1 year ago

DFS(Depth-First Search)

# DFS method 정의

def dfs(graph, v, visited):
    visited[v] = True
    print(v, end=' ')
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)

graph = [
    [], # 노드가 1번부터 시작하는 경우가 많기 때문에 인덱스 0에 관한건 비워두고 시작하는 경우가 많음
    [2,3,8], # 1번 노드와 인접한 노드들
    [1,7],
    [1,4,5],
    [3,5],
    [3,4],
    [7],
    [2,6,8],
    [1,7]
]

visited = [False] * 9 # 1번부터 시작했으니까 n+1개 생성

dfs(graph, 1, visited)

BFS(Breadth-First Search)

from collections import deque

# BFS 메서드 정의 
def bfs(graph, start, visited):
    queue = deque([start])
    visited[start] = True
    while queue:
        v = queue.popleft()
        print(v, end=' ')
        for i in graph[v]:
            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)