Package algs41

Class EulerianPath

java.lang.Object
algs41.EulerianPath

public class EulerianPath extends Object
The EulerianPath class represents a data type for finding an Eulerian path in a graph. An Eulerian path is a path (not necessarily simple) that uses every edge in the graph exactly once.

This implementation uses a nonrecursive depth-first search. The constructor runs in O(E + V) time, and uses O(E + V) extra space, where E is the number of edges and V the number of vertices All other methods take O(1) time.

To compute Eulerian cycles in graphs, see EulerianCycle. To compute Eulerian cycles and paths in digraphs, see DirectedEulerianCycle and DirectedEulerianPath.

For additional documentation, see Section 4.1 of Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.

Author:
Robert Sedgewick, Kevin Wayne, Nate Liu
  • Field Details

  • Constructor Details

    • EulerianPath

      public EulerianPath(Graph G)
      Computes an Eulerian path in the specified graph, if one exists.
      Parameters:
      G - the graph
  • Method Details

    • path

      public Iterable<Integer> path()
      Returns the sequence of vertices on an Eulerian path.
      Returns:
      the sequence of vertices on an Eulerian path; null if no such path
    • hasEulerianPath

      public boolean hasEulerianPath()
      Returns true if the graph has an Eulerian path.
      Returns:
      true if the graph has an Eulerian path; false otherwise
    • nonIsolatedVertex

      private static int nonIsolatedVertex(Graph G)
    • satisfiesNecessaryAndSufficientConditions

      The code below is solely for testing correctness of the data type.
    • certifySolution

      private boolean certifySolution(Graph G)
    • unitTest

      private static void unitTest(Graph G, String description)
    • main

      public static void main(String[] args)
      Unit tests the EulerianPath data type.
      Parameters:
      args - the command-line arguments