Поиск в глубину на 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
что как мне кажется неправильно