2026-rff_mp/BrychkinKA/src/strategy/dfs_strategy.py
2026-05-25 15:23:54 +03:00

27 lines
722 B
Python

class DFSStrategy:
def find_path(self, maze, start, exit_):
stack = [start]
parent = {start: None}
visited = {start}
while stack:
cur = stack.pop()
if cur == exit_:
return self._reconstruct(parent, start, exit_), visited
for n in maze.get_neighbors(cur):
if n not in visited:
visited.add(n)
parent[n] = cur
stack.append(n)
return None, visited
def _reconstruct(self, parent, start, exit_):
path = []
cur = exit_
while cur:
path.append(cur)
cur = parent[cur]
return list(reversed(path))