edu.princeton.cs.algs4

## Class DirectedEulerianPath

• Object
• edu.princeton.cs.algs4.DirectedEulerianPath

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

This implementation uses a nonrecursive depth-first search. The constructor runs in O(E + V) time, and uses O(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 digraphs, see `DirectedEulerianCycle`. To compute Eulerian cycles and paths in undirected graphs, see `EulerianCycle` and `EulerianPath`.

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

Author:
Robert Sedgewick, Kevin Wayne, Nate Liu
• ### Constructor Summary

Constructors
Constructor and Description
`DirectedEulerianPath(Digraph G)`
Computes an Eulerian path in the specified digraph, if one exists.
• ### Method Summary

Methods
Modifier and Type Method and Description
`boolean` `hasEulerianPath()`
Returns true if the digraph has an Eulerian path.
`static void` `main(String[] args)`
Unit tests the `DirectedEulerianPath` data type.
`Iterable<Integer>` `path()`
Returns the sequence of vertices on an Eulerian path.
• ### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Constructor Detail

• #### DirectedEulerianPath

`public DirectedEulerianPath(Digraph G)`
Computes an Eulerian path in the specified digraph, if one exists.
Parameters:
`G` - the digraph
• ### Method Detail

• #### 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 digraph has an Eulerian path.
Returns:
`true` if the digraph has an Eulerian path; `false` otherwise
• #### main

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