# Number of Connected Components in an Undirected Graph

323. Number of Connected Components in an Undirected Graph

Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), write a function to find the number of connected components in an undirected graph.

Example 1:

``````     0          3
|          |
1 --- 2    4
``````

Given n = 5 and edges = [[0, 1], [1, 2], [3, 4]], return 2.

Example 2:

``````     0           4
|           |
1 --- 2 --- 3
``````

Given n = 5 and edges = [[0, 1], [1, 2], [2, 3], [3, 4]], return 1.

Note:
You can assume that no duplicate edges will appear in edges. Since all edges are undirected, [0, 1] is the same as [1, 0] and thus will not appear together in edges.

``````public class Solution {
public int countComponents(int n, int[][] edges) {
if (n <= 1) {
return n;
}

List<List<Integer>> graph = new ArrayList<>();
for (int i = 0; i < n; i++) {
}

for (int[] edge : edges) {
}

boolean[] visited = new boolean[n];
int count = 0;

for (int i = 0; i < n; i++) {
if (!visited[i]) {
count++;
dfs(visited, i, graph);
}
}

return count;
}

void dfs(boolean[] visited, int index, List<List<Integer>> graph) {
visited[index] = true;

for (int i : graph.get(index)) {
if (!visited[i]) {
dfs(visited, i, graph);
}
}
}
}
``````

Hope this helps,
Michael