def clone(self, node: 'GraphNode'): if not node: return None if node in self.visited: return self.visited[node] clone_node = GraphNode(node.val, []) self.visited[node] = clone_node if node.neighbors: clone_node.neighbors = [self.clone(n) for n in node.neighbors] return clone_node