Skip to content

Commit 5f8b4bd

Browse files
committed
solve: Graph Valid Tree
1 parent 89e9adb commit 5f8b4bd

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

graph-valid-tree/KwonNayeon.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
"""
2+
Valid Tree의 조건:
3+
1. 모든 노드가 연결되어 있어야 함
4+
2. 사이클이 없어야 함
5+
3. edge의 개수는 n-1개
6+
7+
Time Complexity: O(V + E)
8+
- V: 노드의 개수
9+
- E: edge의 개수
10+
11+
Space Complexity: O(V)
12+
- 노드 방문 여부를 저장하는 visited set 사용
13+
14+
풀이방법:
15+
1. 기본 조건 체크: edge의 개수는 n-1개
16+
2. 각 노드별로 연결된 노드들의 정보를 저장
17+
- 무방향 그래프이므로 양쪽 모두 저장
18+
3. DFS로 노드 탐색
19+
- 0번 노드부터 시작해서 연결된 모든 노드를 방문
20+
- 이미 방문한 노드는 재방문하지 않음
21+
4. 모든 노드 방문 확인
22+
- visited의 크기가 n과 같다면 모든 노드가 연결된 것 -> valid tree
23+
"""
24+
def validTree(n, edges):
25+
if len(edges) != n - 1:
26+
return False
27+
28+
adj = [[] for _ in range(n)]
29+
for a, b in edges:
30+
adj[a].append(b)
31+
adj[b].append(a)
32+
33+
visited = set()
34+
35+
def dfs(node):
36+
if node in visited:
37+
return
38+
39+
visited.add(node)
40+
41+
for next_node in adj[node]:
42+
dfs(next_node)
43+
44+
dfs(0)
45+
return len(visited) == n
46+

0 commit comments

Comments
 (0)