133. Clone Graph

class Solution:
    def cloneGraph(self, node: 'Node') -> 'Node':
        if not node:
            return None
        mapping = {}
        stack = [node]
        while stack:
            curr = stack.pop()
            if curr.val not in mapping:
                mapping[curr.val] = Node(curr.val)
            if curr.neighbors != []:
                for neighbor in curr.neighbors:
                    if neighbor.val not in mapping:
                        mapping[neighbor.val] = Node(neighbor.val)
                        stack.append(neighbor)
                    mapping[curr.val].neighbors.append(mapping[neighbor.val])
        return mapping[node.val]