"""
# Definition for a Node.
class Node:
    def __init__(self, val = 0, neighbors = None):
        self.val = val
        self.neighbors = neighbors if neighbors is not None else []
"""
 
from typing import Optional
class Solution:
    def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:
        if not node: return None
 
        q = deque([node])
        cloneMap = {}
 
        while q:
            node = q.popleft()
 
            if node.val not in cloneMap:
                cloneMap[node.val] = Node(node.val, [])
 
            for nei in node.neighbors:
                if nei.val not in cloneMap:
                    q.append(nei)
                    cloneMap[nei.val] = Node(nei.val, [])
 
                cloneMap[node.val].neighbors.append(
                    cloneMap[nei.val]
                )
        
        return cloneMap[1]

Complexity

Time:
Space:

Other Languages