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+ from typing import (
2+ List ,
3+ )
4+
5+ class Solution :
6+ """
7+ @param n: An integer
8+ @param edges: a list of undirected edges
9+ @return: true if it's a valid tree, or false
10+ """
11+ def valid_tree (self , n : int , edges : List [List [int ]]) -> bool :
12+ # DFS(๊ทธ๋ํ ํ์)
13+ # ์๊ฐ๋ณต์ก๋ O(n), ๊ณต๊ฐ๋ณต์ก๋ O(n)
14+
15+ # ํธ๋ฆฌ์ ๊ฐ์ ์๋ ํญ์ "๋
ธ๋ ์ -1"(์๋๋ฉด ๋ฐ๋ก False)
16+ if len (edges ) != n - 1 :
17+ return False
18+
19+ # ์ธ์ ๋ฆฌ์คํธ ๋ฐฉ์์ผ๋ก ๊ทธ๋ํ ์์ฑ
20+ graph = [[] for _ in range (n )]
21+ for i , j in edges :
22+ graph [i ].append (j )
23+ graph [j ].append (i )
24+
25+ # set์ฌ์ฉ(๋ฐฉ๋ฌธ์ฌ๋ถ๋ง ๋น ๋ฅด๊ฒ ํ์(in์ฐ์ฐ ์๊ฐ๋ณต์ก๋ O(1))
26+ visited = set ()
27+
28+ def dfs (node ,prev ):
29+ # ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋
ธ๋๋ฉด ์ข
๋ฃ
30+ if node in visited :
31+ return
32+ visited .add (node )
33+
34+ # ํ์ฌ ๋
ธ๋์ ์ด์ ํ์
35+ for i in graph [node ]:
36+ # ๋ฐ๋ก ์ด์ ๋
ธ๋ ํจ์ค(๋ฌด๋ฐฉํฅ ๊ทธ๋ํ๋๊น)
37+ if i == prev :
38+ continue
39+ dfs (i , node )
40+
41+
42+ # 0๋ฒ ๋
ธ๋๋ถํฐ ํ์ ์์
43+ dfs (0 , - 1 )
44+
45+ # ๋ฐฉ๋ฌธํ ๋
ธ๋ ์์ ์ ์ฒด ๋
ธ๋ ์๊ฐ ๊ฐ์ผ๋ฉด ์ฐ๊ฒฐ ๊ทธ๋ํ -> ํธ๋ฆฌ
46+ return len (visited ) == n
You canโt perform that action at this time.
0 commit comments