Unweighted Graph Is Undirected

Geoffrey Challen // 2021.10.0

Create a public class GraphAnalysis that provides a single static method named isUndirected. isUndirected accepts an UnweightedGraph<?> from cs1.graphs and should return true if the graph is undirected and false otherwise. If the passed graph is null, throw an IllegalArgumentException.

Each node in the graph has a set of neighbors that you can retrieve representing links from that node to other nodes. If the graph is undirected, if there is a link from A to B then there is also a link from B to A. So if B is a neighbor of A, then A should also be a neighbor of B.

Note that you do not need to solve this problem recursively, since there is a concise iterative solution.

For reference, cs1.graphs.UnweightedGraph has the following public properties:

And cs1.graphs.GraphNode has the following public properties: