Graph traversal

Same issue here as in your "old graph." If you have an edge (A, B), but try to add an edge between those two nodes (A, B) or (B, A), your code adds another edge to the graph instead of detecting that there already is an edge. The specification says this is supposed to be an "undirected" graph, so this is a check you should be making.