133. Clone Graph

Text Summary

To solve this problem, utilize one key variable and follow four essential steps:

Key Variable:
The ‘checked’ variable is a map that tracks the previous node as the ‘key’ and the corresponding new node as the ‘value’:

checked = {}

Four essential steps:

  1. Check if the current node is ‘None’ or has been visited (present in ‘checked’). If so, return ‘None’ or the value of the checked variable for the current node:
if not node:
    return None
if node in checked:
    return checked[node]
  1. Create a new node and associate it with the current node in the ‘checked’ map:
clone = Node(node.val, [])
checked[node] = clone
  1. Iterate through the neighbors of the current node, recursively creating and connecting new nodes for them:
for n in node.neighbors:
         clone.neighbors.append(dfs(n))
  1. Return the ‘clone’ variable, representing the new node:
return clone

Code Summary

"""
# Definition for a Node.
class Node(object):
    def __init__(self, val = 0, neighbors = None):
        self.val = val
        self.neighbors = neighbors if neighbors is not None else []
"""

class Solution(object):
    def cloneGraph(self, node):
        """
        :type node: Node
        :rtype: Node
        """
        checked = {}
        def dfs(node):
            if not node:
                return None
            if node in checked:
                return checked[node]
            clone = Node(node.val, [])
            checked[node] = clone
            for n in node.neighbors:
                clone.neighbors.append(dfs(n))
            return clone
        return dfs(node)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值