Clone Graph
Medium
Subject: Graphs
Time Complexity
O(V + E)
Space Complexity
O(V)
Problem Description
Given a reference of a node in a connected undirected graph, return a deep copy (clone) of the graph. Each node contains a val and a list of its neighbors.
Optimal Solution
Pythondef cloneGraph(node):
if not node:
return None
visited = {}
def dfs(node):
if node in visited:
return visited[node]
clone = Node(node.val, [])
visited[node] = clone
for neighbor in node.neighbors:
clone.neighbors.append(dfs(neighbor))
return clone
return dfs(node)