Поиск в глубину на Java

Пример используемового графа

Выше приведен пример используемого графа. 0 и 1 - наличие или отсутствие связи между графами.

Я думаю при компилировании есть ошибки. Если возможно, пожалуйста укажите на мои ошибки. За любую помощь буду очень благодарен

 import java.util.ArrayList;


public class DFS {
public static void main(String[] args) {
    int[][] graph = {
            {0, 1, 0, 0, 1, 0},
            {1, 0, 1, 0, 1, 0},
            {0, 1, 0, 1, 0, 0},
            {0, 0, 1, 0, 1, 1},
            {1, 1, 0, 1, 0, 0},
            {0, 0, 0, 1, 0, 0}, // 0 и 1 - связи с полями
    };
    dfs(0,1, graph);
}

private static void dfs(int start, int finish, int[][] vertex) {  // int finish добавить
    ArrayList<Integer> stack = new ArrayList<>(); // хранение вершин, которые посетили
    stack.add(start);
    ArrayList<Integer> select = new ArrayList<>(); // отметка вершин, которые посетили
    ArrayList<Integer> visited = new ArrayList<>();
    while (!stack.isEmpty()) {
        int v = stack.get(stack.size() - 1);
        stack.remove(stack.size() - 1);
        select.add(v);
        visited.add(stack.size()-1);
        if (!visited.contains(v)) {
            for (int i = 0; i < vertex[v].length; i++) {
                if (vertex[v][i] == 1 && !select.contains(i)) {
                    stack.add(i);
                    select.add(i);
                    System.out.println((v+1) + "-" + (i+1));
                    visited.add(v);

                }
            }
        }
    }
}
private static void dfs(int start, int[][] vertex) {  // int finish добавить
    ArrayList<Integer> stack = new ArrayList<>(); // хранение вершин, которые посетили
    stack.add(start);
    ArrayList<Integer> select = new ArrayList<>(); // отметка вершин, которые посетили
    ArrayList<Integer> visited = new ArrayList<>();
    while (!stack.isEmpty()) {
        int v = stack.get(stack.size() - 1);
        stack.remove(stack.size() - 1);
        select.add(v);
        visited.add(stack.size()-1);
        if (!visited.contains(v)) {
            for (int i = 0; i < vertex[v].length; i++) {
                if (vertex[v][i] == 1 && !select.contains(i)) {
                    stack.add(i);
                    select.add(i);
                    visited.add(v);
                    System.out.println((v+1) + "-" + (i+1));

                }
            }
        }
    }
}
}

При компиляции выдает это:

1-2
1-5
5-4
4-3
4-6

что как мне кажется неправильно


Ответы (0 шт):