原题
https://leetcode.com/problems/clone-graph/
解法
DFS, 定义dfs函数, 返回node的副本, base case是当node在字典中时, 直接返回dic[node].
代码
"""
# Definition for a Node.
class Node(object):
def __init__(self, val, neighbors):
self.val = val
self.neighbors = neighbors
"""
class Solution(object):
def cloneGraph(self, node):
"""
:type node: Node
:rtype: Node
"""
def dfs(node, dic):
# return the node copy
if node in dic:
return dic[node]
nodeCopy = Node(node.val, [])
dic[node] = nodeCopy
for neighbor in node.neighbors:
nodeCopy.neighbors.append(dfs(neighbor, dic))
return nodeCopy
if not node: return None
return dfs(node, {})