Skip to content

Commit 62fab02

Browse files
committed
- Graph Valid Tree #262
1 parent ebdc39c commit 62fab02

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

graph-valid-tree/ayosecu.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from collections import deque, defaultdict
2+
3+
class Solution:
4+
"""
5+
- Time Complexity: O(n + e), e = len(edges)
6+
- Space Complexity: O(n), The size of dictionary
7+
"""
8+
def validTree(self, n, edges):
9+
# The number of edges must be "n - 1"
10+
if len(edges) != n - 1:
11+
return False
12+
13+
dic = defaultdict(list)
14+
for u, v in edges:
15+
dic[u].append(v)
16+
dic[v].append(u)
17+
18+
# BFS for visiting all nodes
19+
visited = set()
20+
dq = deque([0])
21+
22+
while dq:
23+
node = dq.popleft()
24+
if node in visited:
25+
continue
26+
visited.add(node)
27+
for next in dic[node]:
28+
if next not in visited:
29+
dq.append(next)
30+
31+
# Check all nodes were visited
32+
return len(visited) == n
33+
34+
tc = [
35+
(5, [[0, 1], [0, 2], [0, 3], [1, 4]], True),
36+
(5, [[0, 1], [1, 2], [2, 3], [1, 3], [1, 4]], False)
37+
]
38+
39+
sol = Solution()
40+
for i, (n, edges, e) in enumerate(tc, 1):
41+
r = sol.validTree(n, edges)
42+
print(f"TC {i} is Passed!" if r == e else f"TC {i} is Failed! - Expected: {e}, Result: {r}")

0 commit comments

Comments
 (0)