Source of 29.23.java


  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