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