Update Graph.java
for dfsWithoutRecursion, when a node popped from the stack it should be checked that the current node is visited or not. Since stack has duplicated nodes, some nodes is visired doubly.
@@ -29,6 +29,7 @@ public class Graph {
stack.push(start);
while (!stack.isEmpty()) {
int current = stack.pop();
+ if(!isVisited[current]){
isVisited[current] = true;
visit(current);
for (int dest : adjVertices.get(current)) {
@@ -37,6 +38,7 @@ public class Graph {
}
}
}
+ }
public void dfs(int start) {
boolean[] isVisited = new boolean[adjVertices.size()];
