美文网首页
LeetCode-python 133. 克隆图

LeetCode-python 133. 克隆图

作者: wzNote | 来源:发表于2022-11-17 00:11 被阅读0次

    题目链接

    难度:中等       类型: bfs


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

    图中的每个节点都包含它的值 valint) 和其邻居的列表(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]
    

    相关文章

      网友评论

          本文标题:LeetCode-python 133. 克隆图

          本文链接:https://www.haomeiwen.com/subject/otiuxdtx.html