难度:中等 类型: bfs
给你无向 **连通 **图中一个节点的引用,请你返回该图的 深拷贝(克隆)。
图中的每个节点都包含它的值 val
(int
) 和其邻居的列表(list[Node]
)。
class Node {
public int val;
public List<Node> neighbors;
}
示例
输入:adjList = [[2,4],[1,3],[2,4],[1,3]]
输出:[[2,4],[1,3],[2,4],[1,3]]
解释:
图中有 4 个节点。
节点 1 的值是 1,它有两个邻居:节点 2 和 4 。
节点 2 的值是 2,它有两个邻居:节点 1 和 3 。
节点 3 的值是 3,它有两个邻居:节点 2 和 4 。
节点 4 的值是 4,它有两个邻居:节点 1 和 3 。
解题思路
代码实现
class Solution:
def cloneGraph(self, node: 'Node') -> 'Node':
if not node:
return node
queue = [node]
visited ={}
visited[node] = Node(node.val, [])
while queue:
i = queue.pop(0)
for neighbor in i.neighbors:
if neighbor not in visited:
visited[neighbor] = Node(neighbor.val, [])
queue.append(neighbor)
visited[i].neighbors.append(visited[neighbor])
return visited[node]