public class UndirectedGraph extends Graph { public UndirectedGraph() { super(); } @Override public boolean addEdge(Node node1, Node node2) { addNode(node1); // only adds if node not already in graph. addNode(node2); boolean addEdgeSuccess = ( addEdgeFromTo(node1, node2) && addEdgeFromTo(node2, node1)); if (addEdgeSuccess) { numEdges++; } return addEdgeSuccess; } @Override public boolean removeEdge(Node node1, Node node2) { if (!containsNode(node1) || !containsNode(node2)) { return false; } boolean removeEdgeSuccess = ( removeEdgeFromTo(node1, node2) && removeEdgeFromTo(node2, node1)); if (removeEdgeSuccess) { numEdges--; } return removeEdgeSuccess; } }