/** * Computes all connected components of a graph. * * @return A list of all connected components subgraphs. */ public List<GraphAdapter<N, E>> computeConnectedComponents() { final List<GraphAdapter<N, E>> result = new ArrayList<>(); final Set<N> todo = new HashSet<>(); for (final N node : adapter.getNodes()) { todo.add(node); } while (!todo.isEmpty()) { final N node = todo.iterator().next(); final GraphAdapter<N, E> subgraph = computeConnectedComponents(node); result.add(subgraph); for (final N n : subgraph.getNodes()) { todo.remove(n); } } return result; } }
final GraphConnectedComponents<TestGraphNode, TestGraphEdge> gcc = new GraphConnectedComponents<>(g); final List<GraphAdapter<TestGraphNode, TestGraphEdge>> cc = gcc.computeConnectedComponents(); int index = 0; for (final GraphAdapter<TestGraphNode, TestGraphEdge> adapter : cc) {