from strat import PathFindingStrategy from path import restore class DFS(PathFindingStrategy): def find_path(self, maze, start, exit): stack = [start] visited = {start} parent = {} while start: current = stack.pop() if current == exit: break for n in maze.get_neighbors(current): if n not in visited: visited.add(n) parent[n] = current stack.append(n) return self.restore(parent, start, exit), len(visited)