1: public QueueInterface<T> getBreadthFirstTraversal(T origin)
2: {
3: resetVertices();
4: QueueInterface<T> traversalOrder = new LinkedQueue<>();
5: QueueInterface<VertexInterface<T>> vertexQueue = new LinkedQueue<>();
6:
7: VertexInterface<T> originVertex = vertices.getValue(origin);
8: originVertex.visit();
9: traversalOrder.enqueue(origin); // Enqueue vertex label
10: vertexQueue.enqueue(originVertex); // Enqueue vertex
11: while (!vertexQueue.isEmpty())
12: {
13: VertexInterface<T> frontVertex = vertexQueue.dequeue();
14: Iterator<VertexInterface<T>> neighbors = frontVertex.getNeighborIterator();
15: while (neighbors.hasNext())
16: {
17: VertexInterface<T> nextNeighbor = neighbors.next();
18: if (!nextNeighbor.isVisited())
19: {
20: nextNeighbor.visit();
21: traversalOrder.enqueue(nextNeighbor.getLabel());
22: vertexQueue.enqueue(nextNeighbor);
23: } // end if
24: } // end while
25: } // end while
26: return traversalOrder;
27: } // end getBreadthFirstTraversal
28: // Version 4.0