133. Clone Graph

Given a reference of a node in a connected undirected graph.

Return a deep copy (clone) of the graph.


Note: Watch out where clonedMap is updated. It's right after a node is visited.
Otherwise you will get into infinite recursion.

class Solution:
    def cloneGraph(self, node: 'Node') -> 'Node':
               
        def recurse(src):
            if src is None:
                return None
            dst = Node(src.val)
            clonedMap[dst.val] = dst
           
            for nei in src.neighbors:
                if nei.val in clonedMap:
                    subTree = clonedMap[nei.val]
                else:
                    subTree = recurse(nei)                    
                   
                dst.neighbors.append(subTree)
                                       
            return dst
       
        clonedMap = {}
       
        return recurse(node)

Comments

Popular posts from this blog

849. Maximize Distance to Closest Person

347. Top K Frequent Elements

139. Word Break