Пример #1
0
 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);
     }
   }
 }
Пример #2
0
  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()));
  }