Time: 38 ms (85.56%), Space: 18.1 MB (81.8%) - LeetHub

This commit is contained in:
Deven
2025-12-10 16:30:29 -05:00
parent 2c96c57870
commit 88b99caf11
+31
View File
@@ -0,0 +1,31 @@
"""
# 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 []
"""
from typing import Optional
from collections import deque
class Solution:
def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:
if not node:
return node
newHead = Node(node.val)
frontier = deque([ node ])
nodeMapping = { node.val: newHead }
while len(frontier) > 0:
current = frontier.popleft()
for n in current.neighbors:
if n.val not in nodeMapping:
newNode = Node(n.val)
nodeMapping[newNode.val] = newNode
frontier.append(n)
nodeMapping[current.val].neighbors.append(nodeMapping[n.val])
return newHead