Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static <T> List<Vertex<T>> breadthFirstSearch(Vertex<T> start,
- Graph<T> graph) {
- if (start == null || graph == null) {
- String msg = "The start Vertex or the graph cannot equal null.";
- throw new IllegalArgumentException(msg);
- }
- if (graph.getAdjacencyList().get(start) == null) {
- String msg = "The start vertex must exist in the graph";
- throw new IllegalArgumentException(msg);
- }
- List<Vertex<T>> order = new java.util.ArrayList<Vertex<T>>();
- Set<Vertex<T>> visited = new java.util.HashSet<Vertex<T>>();
- Queue<Vertex<T>> level = new LinkedList<Vertex<T>>();
- order.add(start);
- visited.add(start);
- level.add(start);
- while (!level.isEmpty()) {
- Vertex<T> v = level.remove();
- for (VertexDistancePair<T> pair : graph.getAdjacencyList().get(v)) {
- Vertex<T> current = pair.getVertex();
- if (!visited.contains(current)) {
- visited.add(current);
- order.add(current);
- level.add(current);
- }
- }
- //level = nextLevel;
- }
- return order;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement