Files
leetcode/0133-clone-graph/0133-clone-graph.py
T

32 lines
898 B
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 []
"""
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