题目
给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)。
图中的每个节点都包含它的值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 = valself.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 nodeif node in self.visited:return self.visited[node]clone_node = Node(node.val, [])self.visited[node] = clone_nodeif node.neighbors:clone_node.neighbors = [self.cloneGraph(n) for n in node.neighbors]return clone_node
