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