133. Clone Graph
Read the full problem statement on LeetCode.
Difficulty: medium Acceptance: 62% Topics: Hash Table, Depth-First Search, Breadth-First Search, Graph
View full problem on LeetCode Reading material
Reference solution (spoiler · python)
"""
# Definition for a Node.
class Node:
def __init__(self, val = 0, neighbors = None):
self.val = val
self.neighbors = neighbors if neighbors is not None else []
"""
class Solution:
def cloneGraph(self, node: "Node") -> "Node":
if not node:
return None
visited = {} # Dictionary to store the cloned nodes
def dfs(original_node):
if original_node in visited:
return visited[original_node]
new_node = Node(original_node.val)
visited[original_node] = new_node
for neighbor in original_node.neighbors:
new_neighbor = dfs(neighbor)
new_node.neighbors.append(new_neighbor)
return new_node
return dfs(node)
Solution from kamyu104/LeetCode-Solutions · MIT