Depth First Search

Depth First search returns a possible path through the graph:

def recursive_dfs(graph, node):
    result = []
    seen = set()

    def recursive_helper(node):
        for neighbor in graph[node]:
            if neighbor not in seen:
                result.append(neighbor)
                seen.add(neighbor)
                recursive_helper(neighbor)

    recursive_helper(node)
    return result