LeetCode-python 133. 克隆图

题目链接

难度:中等       类型: bfs


给你无向 **连通 **图中一个节点的引用,请你返回该图的 深拷贝(克隆)。

图中的每个节点都包含它的值 valint) 和其邻居的列表(list[Node])。

class Node {
public int val;
public List 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]

你可能感兴趣的:(LeetCode-python 133. 克隆图)