File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments