V - the graph vertex typeE - the graph edge typepublic class DepthFirstIterator<V,E> extends CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
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.
| Modifier and Type | Class and Description |
|---|---|
protected static class |
DepthFirstIterator.VisitColor
Standard vertex visit state enumeration.
|
| Modifier and Type | Field and Description |
|---|---|
static Object |
SENTINEL
Sentinel object.
|
crossComponentTraversal, graph, nListeners, reusableEdgeEvent, reusableVertexEvent, reuseEvents| Constructor and Description |
|---|
DepthFirstIterator(Graph<V,E> g)
Creates a new depth-first iterator for the specified graph.
|
DepthFirstIterator(Graph<V,E> g,
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.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
encounterVertex(V vertex,
E edge)
Update data structures the first time we see a vertex.
|
protected void |
encounterVertexAgain(V vertex,
E edge)
Called whenever we re-encounter a vertex.
|
Deque<Object> |
getStack()
Retrieves the LIFO stack of vertices which have been encountered but not yet visited (WHITE).
|
protected boolean |
isConnectedComponentExhausted()
Returns true if there are no more uniterated vertices in the currently iterated
connected component; false otherwise.
|
protected V |
provideNextVertex()
Returns the vertex to be returned in the following call to the iterator
next
method. |
finishVertex, getEntireGraphVertexIterator, getSeenData, hasNext, isSeenVertex, next, putSeenDataaddTraversalListener, createEdgeTraversalEvent, createVertexTraversalEvent, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexFinished, fireVertexTraversed, getGraph, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setCrossComponentTraversal, setReuseEventsclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitforEachRemainingpublic static final Object SENTINEL
public DepthFirstIterator(Graph<V,E> g)
g - the graph to be iterated.public DepthFirstIterator(Graph<V,E> g, V startVertex)
null, iteration will start at an
arbitrary vertex and will not be limited, that is, will be able to traverse all the graph.g - the graph to be iterated.startVertex - the vertex iteration to be started.public DepthFirstIterator(Graph<V,E> g, Iterable<V> startVertices)
null, iteration will start at an
arbitrary vertex and will not be limited, that is, will be able to traverse all the graph.g - the graph to be iterated.startVertices - the vertices iteration to be started.protected boolean isConnectedComponentExhausted()
CrossComponentIteratorisConnectedComponentExhausted in class CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>protected void encounterVertex(V vertex, E edge)
CrossComponentIteratorencounterVertex in class CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>vertex - the vertex encounterededge - the edge via which the vertex was encountered, or null if the vertex is a
starting pointprotected void encounterVertexAgain(V vertex, E edge)
CrossComponentIteratorencounterVertexAgain in class CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>vertex - the vertex re-encounterededge - the edge via which the vertex was re-encounteredprotected V provideNextVertex()
CrossComponentIteratornext
method.provideNextVertex in class CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>public Deque<Object> getStack()
Copyright © 2019. All rights reserved.