File tree Expand file tree Collapse file tree 1 file changed +60
-0
lines changed Expand file tree Collapse file tree 1 file changed +60
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ 무방향 연결된 노드
3+ 그래프의 깊은 복사 반환해라
4+
5+ TC: O(V + E), V: 노드의 수, E: 이웃의 수
6+ SC: O(V + E)
7+
8+ # Definition for a Node.
9+ class Node:
10+ def __init__(self, val = 0, neighbors = None):
11+ self.val = val
12+ self.neighbors = neighbors if neighbors is not None else []
13+ """
14+
15+ from typing import Optional
16+
17+ class Node :
18+ def __init__ (self , val = 0 , neighbors = None ):
19+ self .val = val
20+ self .neighbors = neighbors if neighbors is not None else []
21+
22+ # 깊이 우선 탐색 풀이
23+ class Solution :
24+ def cloneGraph (self , node : Optional ['Node' ]) -> Optional ['Node' ]:
25+ if not node :
26+ return
27+
28+ clones = {}
29+
30+ def dfs (node ):
31+ if node in clones :
32+ return clones [node ]
33+ clone = Node (node .val )
34+ clones [node ] = clone
35+ for nei in node .neighbors :
36+ clone .neighbors .append (dfs (nei ))
37+ return clone
38+
39+ return dfs (node )
40+
41+
42+ from collections import deque
43+
44+ # 넓이 우선 탐색 풀이
45+ class Solution :
46+ def cloneGraph (self , node : Optional ['Node' ]) -> Optional ['Node' ]:
47+ if not node :
48+ return
49+
50+ clone = Node (node .val )
51+ clones = {node : clone }
52+ queue = deque ([node ])
53+ while queue :
54+ node = queue .popleft ()
55+ for nei in node .neighbors :
56+ if nei not in clones :
57+ clones [nei ] = Node (nei .val )
58+ queue .append (nei )
59+ clones [node ].neighbors .append (clones [nei ])
60+ return clone
You can’t perform that action at this time.
0 commit comments