DFS (Depth-First Search)?


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

visited = []

def dfs(node):
    if node in visited:
        return

    visited.append(node)

    for i in graph[node]:
        dfs(i)

BFS (Breadth-First Search )?


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

visited = []

def bfs(start):
    queue = []
    queue.append(start)
    visited.append(start)
    
    while queue:
        num = queue.pop(0)
        for i in graph[num]:
            if i not in visited:
                queue.append(i)
                visited.append(i)