133. Clone Graph

Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.

Graph is an UndirectedGraphNode.

class UndirectedGraphNode:
    def __init__(self, x):
        self.label = x
        self.neighbors = []

Solution: HashMap & DFS

class Solution:
    def cloneGraph(self, graph):
        """
        :type graph: UndirectedGraphNode
        :rtype: UndirectedGraphNode
        """
        if not graph:
            return graph

        cloned = dict()

        def dfs(node):
            if node in cloned:
                return cloned[node]
            clone = UndirectedGraphNode(node.label)
            cloned[node] = clone
            for neighbor in node.neighbors:
                clone.neighbors.append(dfs(neighbor))
            return clone

        dfs(graph)
        return cloned[graph]

results matching ""

    No results matching ""