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