01 · Question
Given a reference of a node in a connected undirected graph, return a deep copy (clone) of the graph.
02 · Solution
1def cloneGraph(node: 'Node') -> 'Node':2 if not node:3 return None4 5 copies = {}6 7 def dfs(cur: 'Node') -> 'Node':8 if cur in copies:9 return copies[cur]10 copy = Node(cur.val)11 copies[cur] = copy12 for nei in cur.neighbors:13 copy.neighbors.append(dfs(nei))14 return copy15 16 return dfs(node)