File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ νμ΄ :
3
+ μ¬κ·λ₯Ό μ΄μ©ν΄μ dfsνμ΄
4
+ nodeλ₯Ό 볡μ νκ³ λ
Έλμ μ΄μλ λ
Έλμ λν΄μ μ¬κ·ν¨μ νΈμΆμ ν΅ν΄ μμ±νλ€
5
+
6
+ clones λμ
λ리μ μ΄λ―Έ 볡μ¬λ nodeλ€μ μ μ₯ν΄μ μ΄λ―Έ 볡μ λ nodeμ λν΄
7
+ ν¨μλ₯Ό νΈμΆνλ©΄ λ°λ‘ return
8
+
9
+ λ
Έλμ μ : V(μ μ : Vertex) μ΄μμ μ : E(κ°μ : Edge)λΌκ³ ν λ
10
+
11
+ TC : O(V + E)
12
+ λ
Έλμ μ΄μμ λν΄μ μννλ―λ‘
13
+
14
+ SC : O(V + E)
15
+ ν΄μν
μ΄λΈμ ν¬κΈ°κ° λ
Έλμ μμ λΉλ‘ν΄μ 컀μ§κ³
16
+ dfsμ νΈμΆμ€νμ μ΄μμ μλ§νΌ μμ΄λ―λ‘
17
+ """
18
+
19
+ """
20
+ # Definition for a Node.
21
+ class Node:
22
+ def __init__(self, val = 0, neighbors = None):
23
+ self.val = val
24
+ self.neighbors = neighbors if neighbors is not None else []
25
+ """
26
+ from typing import Optional
27
+
28
+ class Solution :
29
+ def cloneGraph (self , node : Optional ['Node' ]) -> Optional ['Node' ]:
30
+ if not node :
31
+ return None
32
+
33
+ clones = {}
34
+
35
+ def dfs (node : Optional ['Node' ]) -> Optional ['Node' ]:
36
+ if node in clones :
37
+ return clones [node ]
38
+ clone = Node (node .val )
39
+ clones [node ] = clone
40
+ for nei in node .neighbors :
41
+ clone .neighbors .append (dfs (nei ))
42
+ return clone
43
+
44
+ return dfs (node )
You canβt perform that action at this time.
0 commit comments