Найти все пути через все ребра между двумя узлами
Я пытаюсь выяснить, как найти все пути между узлами через все ребра, а не вершины. Я думал о посещенном[][], чтобы проверить, был ли край посещен, но у меня возникли некоторые проблемы. Может быть, у меня есть простой способ, и я его не вижу. Есть идеи?
void allPathsDFS(int verticeFrom, int verticeTo, boolean[] visited, Deque<Integer> paths, List<List<Integer>> rezults){ visited[verticeFrom] = true; paths.add(verticeFrom); if (verticeFrom == verticeTo){ rezults.add(new ArrayList<Integer>(paths)); } else{ if(adj.containsKey(verticeFrom)){ for(Integer i : adj.get(verticeFrom)){ if(!visited[i] ){ allPathsDFS(i, verticeTo, visited, paths, rezults); } } } } paths.removeLast(); visited[verticeFrom] = false; }
Что я уже пробовал:
Visited Boolean[][] с указанием того, какой край был посещен