- java.lang.Object
- 
- org.jgrapht.traverse.AbstractGraphIterator<V,E>
- 
- org.jgrapht.traverse.CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
- 
- org.jgrapht.traverse.DepthFirstIterator<V,E>
 
 
 
- 
- Type Parameters:
- V- the graph vertex type
- E- the graph edge type
 - All Implemented Interfaces:
- java.util.Iterator<V>,- GraphIterator<V,E>
 
 public class DepthFirstIterator<V,E> extends CrossComponentIterator<V,E,DepthFirstIterator.VisitColor> A depth-first iterator for a directed or undirected graph.For this iterator to work correctly the graph must not be modified during iteration. Currently there are no means to ensure that, nor to fail-fast. The results of such modifications are undefined. - Author:
- Liviu Rau, Barak Naveh
 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description protected static classDepthFirstIterator.VisitColorStandard vertex visit state enumeration.
 - 
Field SummaryFields Modifier and Type Field Description static java.lang.ObjectSENTINELSentinel object.- 
Fields inherited from class org.jgrapht.traverse.AbstractGraphIteratorcrossComponentTraversal, graph, nListeners, reusableEdgeEvent, reusableVertexEvent, reuseEvents
 
- 
 - 
Constructor SummaryConstructors Constructor Description DepthFirstIterator(Graph<V,E> g)Creates a new depth-first iterator for the specified graph.DepthFirstIterator(Graph<V,E> g, java.lang.Iterable<V> startVertices)Creates a new depth-first iterator for the specified graph.DepthFirstIterator(Graph<V,E> g, V startVertex)Creates a new depth-first iterator for the specified graph.
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidencounterVertex(V vertex, E edge)Update data structures the first time we see a vertex.protected voidencounterVertexAgain(V vertex, E edge)Called whenever we re-encounter a vertex.java.util.Deque<java.lang.Object>getStack()Retrieves the LIFO stack of vertices which have been encountered but not yet visited (WHITE).protected booleanisConnectedComponentExhausted()Returnstrueif there are no more uniterated vertices in the currently iterated connected component;falseotherwise.protected VprovideNextVertex()Returns the vertex to be returned in the following call to the iteratornextmethod.- 
Methods inherited from class org.jgrapht.traverse.CrossComponentIteratorfinishVertex, getEntireGraphVertexIterator, getSeenData, hasNext, isSeenVertex, next, putSeenData, selectOutgoingEdges
 - 
Methods inherited from class org.jgrapht.traverse.AbstractGraphIteratoraddTraversalListener, createEdgeTraversalEvent, createVertexTraversalEvent, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexFinished, fireVertexTraversed, getGraph, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setCrossComponentTraversal, setReuseEvents
 
- 
 
- 
- 
- 
Constructor Detail- 
DepthFirstIteratorpublic DepthFirstIterator(Graph<V,E> g) Creates a new depth-first iterator for the specified graph.- Parameters:
- g- the graph to be iterated.
 
 - 
DepthFirstIteratorpublic DepthFirstIterator(Graph<V,E> g, V startVertex) Creates a new depth-first iterator for the specified graph. Iteration will start at the specified start vertex and will be limited to the connected component that includes that vertex. If the specified start vertex isnull, iteration will start at an arbitrary vertex and will not be limited, that is, will be able to traverse all the graph.- Parameters:
- g- the graph to be iterated.
- startVertex- the vertex iteration to be started.
 
 - 
DepthFirstIteratorpublic DepthFirstIterator(Graph<V,E> g, java.lang.Iterable<V> startVertices) Creates a new depth-first iterator for the specified graph. Iteration will start at the specified start vertices and will be limited to the connected component that includes those vertices. If the specified start vertices isnull, iteration will start at an arbitrary vertex and will not be limited, that is, will be able to traverse all the graph.- Parameters:
- g- the graph to be iterated.
- startVertices- the vertices iteration to be started.
 
 
- 
 - 
Method Detail- 
isConnectedComponentExhaustedprotected boolean isConnectedComponentExhausted() Description copied from class:CrossComponentIteratorReturnstrueif there are no more uniterated vertices in the currently iterated connected component;falseotherwise.- Specified by:
- isConnectedComponentExhaustedin class- CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
- Returns:
- trueif there are no more uniterated vertices in the currently iterated connected component;- falseotherwise.
 
 - 
encounterVertexprotected void encounterVertex(V vertex, E edge) Description copied from class:CrossComponentIteratorUpdate data structures the first time we see a vertex.- Specified by:
- encounterVertexin class- CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
- Parameters:
- vertex- the vertex encountered
- edge- the edge via which the vertex was encountered, or null if the vertex is a starting point
 
 - 
encounterVertexAgainprotected void encounterVertexAgain(V vertex, E edge) Description copied from class:CrossComponentIteratorCalled whenever we re-encounter a vertex. The default implementation does nothing.- Specified by:
- encounterVertexAgainin class- CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
- Parameters:
- vertex- the vertex re-encountered
- edge- the edge via which the vertex was re-encountered
 
 - 
provideNextVertexprotected V provideNextVertex() Description copied from class:CrossComponentIteratorReturns the vertex to be returned in the following call to the iteratornextmethod.- Specified by:
- provideNextVertexin class- CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
- Returns:
- the next vertex to be returned by this iterator.
 
 - 
getStackpublic java.util.Deque<java.lang.Object> getStack() Retrieves the LIFO stack of vertices which have been encountered but not yet visited (WHITE). This stack also contains sentinel entries representing vertices which have been visited but are still GRAY. A sentinel entry is a sequence (v, SENTINEL), whereas a non-sentinel entry is just (v).- Returns:
- stack
 
 
- 
 
-