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