File tree 2 files changed +44
-0
lines changed
number-of-connected-components-in-an-undirected-graph
2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def validTree (self , n : int , edges : List [List [int ]]) -> bool :
3
+ # filter false cases by definition of tree
4
+ if n - 1 != len (edges ):
5
+ return False
6
+
7
+ nodes = set ()
8
+
9
+ for i , edge in enumerate (edges ):
10
+ nodes .add (edge [0 ])
11
+ nodes .add (edge [1 ])
12
+
13
+ if i + 1 > len (nodes ) - 1 :
14
+ return False
15
+
16
+ return True
17
+
18
+ ## TC: O(num(edges)), SC: P(num(nodes))
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def countComponents (self , n : int , edges : List [List [int ]]) -> int :
3
+
4
+ graph = collections .defaultdict (list )
5
+
6
+ for x , y in edges :
7
+ graph [x ].append (y )
8
+ graph [y ].append (x )
9
+
10
+ def dfs (node , visited ):
11
+ visited .add (node )
12
+ for neighbor in graph [node ]:
13
+ if neighbor not in visited :
14
+ dfs (neighbor , visited )
15
+
16
+ count = 0
17
+ visited = set ()
18
+
19
+ for node in range (n ):
20
+ if node not in visited :
21
+ dfs (node , visited )
22
+ count += 1
23
+
24
+ return count
25
+
26
+ ## TC && SC: O(num(edge) + num(node))
You can’t perform that action at this time.
0 commit comments