-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolveDFS.js
40 lines (36 loc) · 1.69 KB
/
solveDFS.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function solveDFS() {
console.log("dfs pass");
visitedArray[current.i][current.j] = true;
if (current.i == cols - 1 && current.j == rows - 1) {
console.log("Reached destination");
// highlightPath();
runSolveDFS = false;
runHighlightPath = true;
stack = [];
return undefined;
}
if (current.i > 0 && !visitedArray[current.i - 1][current.j] && !grid[current.i - 1][current.j].wall && !stack.includes(grid[current.i - 1][current.j])) {
stack.push(grid[current.i - 1][current.j]);
previousArray[current.i - 1][current.j] = [current.i, current.j];
}
if (current.i < cols - 1 && !visitedArray[current.i + 1][current.j] && !grid[current.i + 1][current.j].wall && !stack.includes(grid[current.i + 1][current.j])) {
stack.push(grid[current.i + 1][current.j]);
previousArray[current.i + 1][current.j] = [current.i, current.j];
}
if (current.j > 0 && !visitedArray[current.i][current.j - 1] && !grid[current.i][current.j - 1].wall && !stack.includes(grid[current.i][current.j - 1])) {
stack.push(grid[current.i][current.j - 1]);
previousArray[current.i][current.j - 1] = [current.i, current.j];
}
if (current.j < rows - 1 && !visitedArray[current.i][current.j + 1] && !grid[current.i][current.j + 1].wall && !stack.includes(grid[current.i][current.j + 1])) {
stack.push(grid[current.i][current.j + 1]);
previousArray[current.i][current.j + 1] = [current.i, current.j];
}
if (!stack.length) {
console.log("End of solve DFS")
current = grid[0][0];
runSolveDFS = false;
processRunning = false;
} else {
current = stack.pop();
}
}