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, getSeenData, hasNext, isSeenVertex, next, putSeenData
addTraversalListener, createEdgeTraversalEvent, createVertexTraversalEvent, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexFinished, fireVertexTraversed, getGraph, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setCrossComponentTraversal, setReuseEvents
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEachRemaining
public 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()
CrossComponentIterator
isConnectedComponentExhausted
in class CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
protected void encounterVertex(V vertex, E edge)
CrossComponentIterator
encounterVertex
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)
CrossComponentIterator
encounterVertexAgain
in class CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
vertex
- the vertex re-encounterededge
- the edge via which the vertex was re-encounteredprotected V provideNextVertex()
CrossComponentIterator
next
method.provideNextVertex
in class CrossComponentIterator<V,E,DepthFirstIterator.VisitColor>
public Deque<Object> getStack()
Copyright © 2018. All rights reserved.