Clone Graph LeetCode solution in Python
1def cloneGraph(self, node: 'Node') -> 'Node':23if node == None:4return None56new_node = Node(node.val, [])78visited = set()910q = [[node, new_node]]11visited.add(node.val)1213adj_map = {}1415adj_map[node] = new_node1617while len(q) != 0:1819curr = q.pop(0)202122for n in curr[0].neighbors:2324# if n.val not in visited:25if n not in adj_map and n is not None:26new = Node(n.val, [])27curr[1].neighbors.append(new)28adj_map[n] = new29else:30curr[1].neighbors.append(adj_map[n])3132if n.val not in visited:33q.append([n, adj_map[n]])34visited.add(n.val)353637return new_node38