org._3pq.jgrapht.traverse

Class BreadthFirstIterator

Implemented Interfaces:
GraphIterator, Iterator

public class BreadthFirstIterator
extends CrossComponentIterator

A breadth-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.
Author:
Barak Naveh
Since:
Jul 19, 2003

Constructor Summary

BreadthFirstIterator(Graph g)
Creates a new breadth-first iterator for the specified graph.
BreadthFirstIterator(Graph g, Object startVertex)
Creates a new breadth-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

BreadthFirstIterator

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

BreadthFirstIterator

public BreadthFirstIterator(Graph g,
                            Object startVertex)
Creates a new breadth-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