diff --git a/Projektgruppe_175/src/base/Graph.java b/Projektgruppe_175/src/base/Graph.java index 5f6be17..e7d5257 100644 --- a/Projektgruppe_175/src/base/Graph.java +++ b/Projektgruppe_175/src/base/Graph.java @@ -132,7 +132,33 @@ public class Graph { */ public boolean allNodesConnected() { - return false; + if (nodes.size() < 1) + return true; + + final Node firstNode = nodes.get(0); + + ArrayList> allVisitedNodes = new ArrayList>(); + ArrayList> nextVisitNodes = new ArrayList>(); + allVisitedNodes.add(firstNode); + + nextVisitNodes.addAll(getEdges(firstNode).stream() + .map(x -> x.getNodeB()) + .filter(x -> !allVisitedNodes.contains(x)) + .collect(Collectors.toList())); + + while (nextVisitNodes.size() > 0) { + + nextVisitNodes.addAll(getEdges(nextVisitNodes.get(0)).stream() + .map(x -> x.getNodeB()) + .filter(x -> !allVisitedNodes.contains(x)) + .collect(Collectors.toList())); + + allVisitedNodes.add(nextVisitNodes.get(0)); + nextVisitNodes.remove(0); + + } + + return allVisitedNodes.size() == nodes.size(); } }