34 lines
732 B
Python
34 lines
732 B
Python
from strategy import PathFindingStrategy
|
|
from Maze import Maze, Cell
|
|
|
|
|
|
class DFSStrategy(PathFindingStrategy):
|
|
def findPath(maze: Maze, start, exit):
|
|
|
|
if not start or not exit:
|
|
return []
|
|
|
|
visited = set()
|
|
path = []
|
|
|
|
def dfs(root: Cell) -> bool:
|
|
visited.add(root)
|
|
path.append(root)
|
|
|
|
if root == exit:
|
|
return True
|
|
|
|
neighbors = maze.getNeighbors(root)
|
|
for neighbor in neighbors:
|
|
if neighbor not in visited:
|
|
if dfs(neighbor):
|
|
return True
|
|
|
|
path.pop()
|
|
return False
|
|
|
|
if dfs(start):
|
|
return path
|
|
|
|
return []
|