2026-rff_mp/ProninVV/task-2-oop/DepthFirstSearch.py

37 lines
796 B
Python
Raw Normal View History

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 = []
count_cell = 0
def dfs(root: Cell) -> bool:
visited.add(root)
path.append(root)
count_cell += 1
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, count_cell
return []