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