LeetCode 323: Number Of Connected Components In An Undirected Graph — Step-by-Step Visual Trace


Medium — Graph | Depth-First Search | Union Find | Connected Components

The Problem

Given n nodes labeled from 0 to n-1 and a list of undirected edges, return the number of connected components in the graph.

Approach

Build an adjacency list representation of the graph, then use depth-first search (DFS) to traverse each unvisited component. For each unvisited node, perform DFS to mark all nodes in that component as visited and increment the component counter.

Time: O(V + E) · Space: O(V + E)

Code

from collections import defaultdict, deque

class Solution:
    def countComponents(self, n: int, edges: List[List[int]]) -> int:
        graph = defaultdict(list)
        for u, v in edges:
            graph[u].append(v)
            graph[v].append(u)

        def dfs(node):
            visited.add(node)
            for neighbor in graph[node]:
                if neighbor not in visited:
                    dfs(neighbor)

        visited = set()
        components = 0

        for node in range(n):
            if node not in visited:
                components += 1
                dfs(node)

        return components

Watch It Run

Try it yourself: Open TraceLit and step through every line.


Built with TraceLit — the visual algorithm tracer for LeetCode practice.


Comments