難度:中等 ??????類型: bfs
給你無向 **連通 **圖中一個節(jié)點的引用,請你返回該圖的 深拷貝(克鲁纭)。
圖中的每個節(jié)點都包含它的值 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 個節(jié)點。
節(jié)點 1 的值是 1颅湘,它有兩個鄰居:節(jié)點 2 和 4 话侧。
節(jié)點 2 的值是 2,它有兩個鄰居:節(jié)點 1 和 3 闯参。
節(jié)點 3 的值是 3瞻鹏,它有兩個鄰居:節(jié)點 2 和 4 。
節(jié)點 4 的值是 4赢赊,它有兩個鄰居:節(jié)點 1 和 3 乙漓。
解題思路
代碼實現(xiàn)
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]