题目
给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)。
图中的每个节点都包含它的值val和其邻居的列表(list[Node])。
class Node {
public int val;
public List<Mode> neighbors;
}
思路
利用dfs遍历一遍每个节点相邻的节点。
"""
# Definition for a Node.
class Node(object):
def __init__(self, val, neighbors):
self.val = val
self.neighbors = neighbors
"""
class Solution(object):
def __init__(self):
# Dictionary to save the visited node and it's respective clone
# as key and value respectively. This helps to avoid cycles.
self.visited = {}
def cloneGraph(self, node):
"""
:type node: Node
:rtype: Node
"""
if not node:
return node
if node in self.visited:
return self.visited[node]
clone_node = Node(node.val, [])
self.visited[node] = clone_node
if node.neighbors:
clone_node.neighbors = [self.cloneGraph(n) for n in node.neighbors]
return clone_node