Clone Graph
Solution 1
# Definition for a undirected graph node
# class UndirectedGraphNode:
# def __init__(self, x):
# self.label = x
# self.neighbors = []
class Solution:
# @param node, a undirected graph node
# @return a undirected graph node
def cloneGraph(self, node):
if node == None:
return node
dict = {}
q = collections.deque([])
q.append(node)
while len(q) > 0:
n = q.popleft()
if n not in dict:
dict[n] = UndirectedGraphNode(n.label)
for c in n.neighbors:
q.append(c)
# copy child nodes.
for key in dict:
for child in key.neighbors:
dict[key].neighbors.append(dict[child])
return dict[node]Solution 2
Solution 3
Last updated