Package edu.princeton.cs.algs4
Class Cycle
- Object
-
- edu.princeton.cs.algs4.Cycle
-
public class Cycle extends Object
TheCycleclass represents a data type for determining whether an undirected graph has a simple cycle. The hasCycle operation determines whether the graph has a cycle and, if so, the cycle operation returns one.This implementation uses depth-first search. The constructor takes Θ(V + E) time in the worst case, where V is the number of vertices and E is the number of edges. (The depth-first search part takes only O(V) time; however, checking for self-loops and parallel edges takes Θ(V + E) time in the worst case. Each instance method takes Θ(1) time. It uses Θ(V) extra space (not including the graph).
For additional documentation, see Section 4.1 of Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.
- Author:
- Robert Sedgewick, Kevin Wayne
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Iterable<Integer>cycle()Returns a cycle in the graphG.booleanhasCycle()Returns true ifgraphhas a cycle.static voidmain(String[] args)Unit tests theCycledata type.
-
-
-
Constructor Detail
-
Cycle
public Cycle(Graph graph)
Determines whether the undirected graphgraphhas a cycle and, if so, finds such a cycle.- Parameters:
graph- the undirected graph
-
-
Method Detail
-
hasCycle
public boolean hasCycle()
Returns true ifgraphhas a cycle.- Returns:
trueif the graph has a cycle;falseotherwise
-
cycle
public Iterable<Integer> cycle()
Returns a cycle in the graphG.- Returns:
- a cycle if the graph
Ghas a cycle, andnullotherwise
-
main
public static void main(String[] args)
Unit tests theCycledata type.- Parameters:
args- the command-line arguments
-
-