from strategies.pathfinding_strategy import PathFindingStrategy class DFSStrategy(PathFindingStrategy): name = "DFS" def findPath(self, maze, start, exitCell): self.visitedCount = 0 if start is None or exitCell is None: return [] stack = [start] visited = set() parent = {} while stack: current = stack.pop() pos = (current.x, current.y) if pos in visited: continue visited.add(pos) self.visitedCount += 1 if current.x == exitCell.x and current.y == exitCell.y: return self._restore_path(parent, start, exitCell) neighbors = maze.getNeighbors(current) for neighbor in reversed(neighbors): npos = (neighbor.x, neighbor.y) if npos not in visited: parent[npos] = current stack.append(neighbor) return []