org._3pq.jgrapht.traverse
Class DepthFirstIterator

java.lang.Object
  |
  +--org._3pq.jgrapht.traverse.AbstractGraphIterator
        |
        +--org._3pq.jgrapht.traverse.CrossComponentIterator
              |
              +--org._3pq.jgrapht.traverse.DepthFirstIterator
All Implemented Interfaces:
GraphIterator, java.util.Iterator

public class DepthFirstIterator
extends CrossComponentIterator

A depth-first iterator for a directed and an 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.

Since:
Jul 29, 2003
Author:
Liviu Rau, Barak Naveh

Constructor Summary
DepthFirstIterator(Graph g)
          Creates a new depth-first iterator for the specified graph.
DepthFirstIterator(Graph g, java.lang.Object startVertex)
          Creates a new depth-first iterator for the specified graph.
 
Method Summary
protected  void encounterVertex(java.lang.Object vertex, Edge edge)
          Update data structures the first time we see a vertex.
protected  void encounterVertexAgain(java.lang.Object vertex, Edge edge)
          Called whenever we re-encounter a vertex.
protected  boolean isConnectedComponentExhausted()
          Returns true if there are no more uniterated vertices in the currently iterated connected component; false otherwise.
protected  java.lang.Object provideNextVertex()
          Returns the vertex to be returned in the following call to the iterator next method.
 
Methods inherited from class org._3pq.jgrapht.traverse.CrossComponentIterator
getSeenData, hasNext, next, putSeenData
 
Methods inherited from class org._3pq.jgrapht.traverse.AbstractGraphIterator
addTraversalListener, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexTraversed, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setCrossComponentTraversal, setReuseEvents
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DepthFirstIterator

public DepthFirstIterator(Graph g)
Creates a new depth-first iterator for the specified graph.
Parameters:
g - the graph to be iterated.

DepthFirstIterator

public DepthFirstIterator(Graph g,
                          java.lang.Object 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 is null, 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.
Method Detail

isConnectedComponentExhausted

protected boolean isConnectedComponentExhausted()
Description copied from class: CrossComponentIterator
Returns true if there are no more uniterated vertices in the currently iterated connected component; false otherwise.
Overrides:
isConnectedComponentExhausted in class CrossComponentIterator
See Also:
CrossComponentIterator.isConnectedComponentExhausted()

encounterVertex

protected void encounterVertex(java.lang.Object vertex,
                               Edge edge)
Description copied from class: CrossComponentIterator
Update data structures the first time we see a vertex.
Overrides:
encounterVertex in class CrossComponentIterator
See Also:
CrossComponentIterator.encounterVertex(java.lang.Object, org._3pq.jgrapht.Edge)

encounterVertexAgain

protected void encounterVertexAgain(java.lang.Object vertex,
                                    Edge edge)
Description copied from class: CrossComponentIterator
Called whenever we re-encounter a vertex. The default implementation does nothing.
Overrides:
encounterVertexAgain in class CrossComponentIterator
See Also:
CrossComponentIterator.encounterVertexAgain(java.lang.Object, org._3pq.jgrapht.Edge)

provideNextVertex

protected java.lang.Object provideNextVertex()
Description copied from class: CrossComponentIterator
Returns the vertex to be returned in the following call to the iterator next method.
Overrides:
provideNextVertex in class CrossComponentIterator
See Also:
CrossComponentIterator.provideNextVertex()