Please solve the programming task below using a self-contained code snippet in a markdown code block.

You have a graph of n nodes. You are given an integer n and an array edges where edges[i] = [ai, bi] indicates that there is an edge between ai and bi in the graph.
Return the number of connected components in the graph.
 
Please complete the following python code precisely:
```python
class Solution:
    def countComponents(self, n: int, edges: List[List[int]]) -> int:
```