Clone Graph (DFS)

LeetCode 133

# Definition for a undirected graph node
# class UndirectedGraphNode:
#     def __init__(self, x):
#         self.label = x
#         self.neighbors = []
"""
DFS-Iterative-Stack
"""
class Solution:
    def cloneGraph(self, node):
        if not node:
            return node 
        stack = [node]
        visited = {node:UndirectedGraphNode(node.label)}
        head = visited[node]      
        while stack:
            node = stack.pop()
            for ns in node.neighbors:
                if ns not in visited:
                    stack.append(ns)
                    visited[ns] = UndirectedGraphNode(ns.label)
                visited[node].neighbors.append(visited[ns])
        return head

Last updated