求欧拉回路:Hierholzer算法图解模拟
代码模板:
List<Integer> resultList = new ArrayList<>();
int[][] Graph;
boolean[][] vis;List<Integer> hierholzer() {dfs(0);resultList.add(0);// 数组反转Collections.reverse(resultList);return resultList;
}void dfs(int start) {for(int end : Graph[start]) {if(!vis[start][end]) {vis[start][end] = true;dfs(end);resultList.add(end);}}
}
算法图示:
最终得到欧拉回路:0 ->1 -> 2 -> 4 -> 5 -> 2 -> 3 -> 0