1 欧拉路径
欧拉路径是图中每一条边只访问一次的路径。欧拉回路是在同一顶点上开始和结束的欧拉路径。
这里展示一种输出欧拉路径或回路的算法。
以下是Fleury用于打印欧拉轨迹或循环的算法(源)。
- 1、确保图形有0个或2个奇数顶点。
- 2、如果有0个奇数顶点,则从任意位置开始。如果有两个奇数顶点,请从其中一个开始。
- 3、沿边一次一条。如果要在桥和非桥之间进行选择,请始终选择非桥。
- 4、边缘用完时停止。
这个想法是,“不要过桥”,这样我们就可以回到一个顶点并遍历其余的边。
2 算法
在下面的代码中,假设给定的图具有欧拉轨迹或回路。主要焦点是打印欧拉轨迹或回路。我们可以使用isEulerian()首先检查给定图中是否存在欧拉轨迹或回路。
我们首先找到必须是奇点的起点(如果有奇点),并将其存储在变量“u”中。如果奇数顶点为零,则从顶点“0”开始。我们调用printEulerUtil()来打印从u开始的Euler tour。我们遍历u的所有相邻顶点,如果只有一个相邻顶点,