Я пытаюсь реализовать рекурсивную DFS в Python. Моя попытка:
def dfs_recursive(graph, vertex, path=[]):
path += [vertex]
for neighbor in graph[vertex]:
# print(neighbor)
if neighbor not in path: # inefficient line
path = dfs_recursive(graph, neighbor, path)
return path
adjacency_matrix = {"s": ["a", "c", "d"], "c": ["e", "b"],
"b": ["d"], "d": ["c"], "e": ["s"], "a": []}
К сожалению, строка if neighbor not in path
очень неэффективна, и это не то, что я должен делать. Я хотел бы, чтобы выходные данные были узлами, которые посещаются по порядку, но без дубликатов. Итак, в этом случае:
['s', 'a', 'c', 'e', 'b', 'd']
Как вывести узлы, которые посещаются в порядке DFS, но без дубликатов, эффективно?