Advertisement
Guest User

BFS (THE RIGHT ONE)

a guest
Dec 4th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.26 KB | None | 0 0
  1.     public static <T> List<Vertex<T>> breadthFirstSearch(Vertex<T> start,
  2.             Graph<T> graph) {
  3.  
  4.         if (start == null || graph == null) {
  5.             String msg = "The start Vertex or the graph cannot equal null.";
  6.             throw new IllegalArgumentException(msg);
  7.         }
  8.  
  9.         if (graph.getAdjacencyList().get(start) == null) {
  10.             String msg = "The start vertex must exist in the graph";
  11.             throw new IllegalArgumentException(msg);
  12.         }
  13.  
  14.         List<Vertex<T>> order = new java.util.ArrayList<Vertex<T>>();
  15.         Set<Vertex<T>> visited = new java.util.HashSet<Vertex<T>>();
  16.         Queue<Vertex<T>> level = new LinkedList<Vertex<T>>();
  17.  
  18.         order.add(start);
  19.         visited.add(start);
  20.         level.add(start);
  21.  
  22.         while (!level.isEmpty()) {
  23.             Vertex<T> v = level.remove();
  24.  
  25.             for (VertexDistancePair<T> pair : graph.getAdjacencyList().get(v)) {
  26.                 Vertex<T> current = pair.getVertex();
  27.                 if (!visited.contains(current)) {
  28.                     visited.add(current);
  29.                     order.add(current);
  30.                     level.add(current);
  31.                 }
  32.             }
  33.             //level = nextLevel;
  34.         }
  35.         return order;
  36.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement