org._3pq.jgrapht.traverse

Class DepthFirstIterator

Implemented Interfaces:
GraphIterator, 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.
Authors:
Liviu Rau
Barak Naveh
Since:
Jul 29, 2003

Constructor Summary

DepthFirstIterator(Graph g)
Creates a new depth-first iterator for the specified graph.
DepthFirstIterator(Graph g, Object startVertex)
Creates a new depth-first iterator for the specified graph.

Method Summary

protected void
encounterVertex(Object vertex, Edge edge)
protected void
encounterVertexAgain(Object vertex, Edge edge)
protected boolean
isConnectedComponentExhausted()
protected Object
provideNextVertex()

Methods inherited from class org._3pq.jgrapht.traverse.CrossComponentIterator

encounterVertex, encounterVertexAgain, getSeenData, hasNext, isConnectedComponentExhausted, isSeenVertex, next, provideNextVertex, putSeenData

Methods inherited from class org._3pq.jgrapht.traverse.AbstractGraphIterator

addTraversalListener, fireConnectedComponentFinished, fireConnectedComponentStarted, fireEdgeTraversed, fireVertexTraversed, isCrossComponentTraversal, isReuseEvents, remove, removeTraversalListener, setCrossComponentTraversal, setReuseEvents

Constructor Details

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,
                          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 Details

encounterVertex

protected void encounterVertex(Object vertex,
                               Edge edge)
Overrides:
encounterVertex in interface CrossComponentIterator
See Also:
org._3pq.jgrapht.traverse.CrossComponentIterator.encounterVertex(java.lang.Object, org._3pq.jgrapht.Edge)

encounterVertexAgain

protected void encounterVertexAgain(Object vertex,
                                    Edge edge)
Overrides:
encounterVertexAgain in interface CrossComponentIterator
See Also:
org._3pq.jgrapht.traverse.CrossComponentIterator.encounterVertexAgain(java.lang.Object, org._3pq.jgrapht.Edge)

isConnectedComponentExhausted

protected boolean isConnectedComponentExhausted()
Overrides:
isConnectedComponentExhausted in interface CrossComponentIterator

provideNextVertex

protected Object provideNextVertex()
Overrides:
provideNextVertex in interface CrossComponentIterator