|
|
-
-
- import java.util.HashSet;
- import java.util.LinkedList;
- import java.util.Queue;
- import java.util.Set;
-
- /*
- * SD2x Homework #6
- * This is an implementation of Breadth First Search (BFS) on a graph.
- * You may modify and submit this code if you'd like.
- */
-
- public class BreadthFirstSearch {
- protected Set<Node> marked;
- protected Graph graph;
-
- public BreadthFirstSearch(Graph graphToSearch) {
- marked = new HashSet<Node>();
- graph = graphToSearch;
- }
-
- /**
- * This method was discussed in the lesson
- */
- public boolean bfs(Node start, String elementToFind) {
- if (!graph.containsNode(start)) {
- return false;
- }
- if (start.getElement().equals(elementToFind)) {
- return true;
- }
- Queue<Node> toExplore = new LinkedList<Node>();
- marked.add(start);
- toExplore.add(start);
- while (!toExplore.isEmpty()) {
- Node current = toExplore.remove();
- for (Node neighbor : graph.getNodeNeighbors(current)) {
- if (!marked.contains(neighbor)) {
- if (neighbor.getElement().equals(elementToFind)) {
- return true;
- }
- marked.add(neighbor);
- toExplore.add(neighbor);
- }
- }
- }
- return false;
- }
-
-
- }
|