Undirected Graph Size
Create a public class named GraphSize
that provides a single static method size
.
size
receives an unweighted graph containing Integer
values using cs1.graphs.UnweightedGraph
, so an
UnweightedGraph<Integer>
.
To complete this problem you'll need to implement graph traversal.
From a given node, you want to visit all of its neighbors except any nodes that you've already visited.
If you use a Set
to track the nodes that you've visited, then you can simply return the size of that Set
when
you are finished.
We've provided some starter code to get you off on the right track.
For reference, cs1.graphs.UnweightedGraph
has the following public properties:
And cs1.graphs.GraphNode
has the following public properties:
import cs1.graphs.GraphNode;
import cs1.graphs.UnweightedGraph;
import java.util.HashSet;
import java.util.Set;
public class GraphSize {
public static int size(UnweightedGraph<Integer> graph) {
// Handle null
Set<GraphNode<Integer>> nodes = new HashSet<>();
traverse(graph.getNode(), nodes);
return 0;
}
private static void traverse(GraphNode<Integer> node, Set<GraphNode<Integer>> nodes) {
// Add this node to the set
// Iterate through all the neighbors
// If the neighbor hasn't been visited, call traverse on it and pass it the visited set
}
}