JAVA代码详解: 有向图中判断欧拉路径和欧拉回路
欧拉路径是图中访问每一条边一次的路径。
欧拉回路是在同一顶点上开始和结束的欧拉路径。
有欧拉回路的图称为欧拉图。
上一篇博客讨论了无向图的欧拉回路。接下来这一篇博客讨论有向图中判断欧拉路径和欧拉回路问题。
例如,下图的欧拉循环为1、0、3、4、0、2、1
如何检查有向图是否是欧拉图?
如果以下条件为真(成立),则有向图具有欧拉回路
1)所有非零度顶点都属于单个强连通分量。
2)每个顶点的进出度相同。
在计算机科学中,Kosaraju的算法(也称为Kosaraju-Sharir算法)是线性时间的算法来找到一个有向图的强连通分量。
为了比较进度和出度,我们需要存储每个顶点的进度和出度。通过邻接表的大小,可以得到输出度。通过创建一个大小等于顶点数的数组,可以存储度数。
package com.bean.algorithm.basic;
import java.util.Iterator;
import java.util.LinkedList;
public class EulerCircuit6 {
private int V; // 顶点数量
private LinkedList<Integer> adj[];// 邻接表
private int in[]; // 维护入度
EulerCircuit6(int v) {
V &#