private void Searching(int current) { if (isFinal(current)) { isFound = true; return; } else { if (!ifContainsUnvisitedChildren(current)) { stack.pop(); if (stack.isEmpty()) return; else Searching((int) stack.lastElement()); } else { int next = getFirstUnvisitedChild(current); stack.push(next); visited.add(next); Searching(next); } } }
public DFS( List<int[]> states, HashMap<Integer, List<Integer>> edges, int initialStates, int[] finalStates, int numberOfStates) { this.states = states; this.edges = edges; this.finalStates = finalStates; this.numberOfStates = numberOfStates; this.finalStatesIndex = getIndexOfFinalStates(); stack.push(initialStates); visited.add(initialStates); Searching(initialStates); // System.out.println(Arrays.toString(stack.toArray())); }