133. Clone Graph [Medium] 复制图

it2022-05-19  61

133. Clone Graph

133. Clone Graph

BFS 需要用一个字典,记录原始节点和复制节点的对应关系。

队列里放原始节点如果不在字典中,需要把节点放入队列

代码如下: 循环版本

""" # Definition for a Node. class Node(object): def __init__(self, val, neighbors): self.val = val self.neighbors = neighbors """ class Solution(object): def cloneGraph(self, node): """ :type node: Node :rtype: Node """ if node == None: return None memo = {} qu = [node] res = Node(node.val, []) memo[node] = res while qu: node = qu.pop(0) for i in node.neighbors: if i not in memo: p = Node(i.val, []) memo[i] = p qu.append(i) memo[node].neighbors.append(memo[i]) return res

再来一个递归版本

class Solution(object): def cloneGraph(self, node): """ :type node: Node :rtype: Node """ self.memo = {} return self.clone(node) def clone(self, node): if node == None: return None if node in self.memo: return self.memo[node] p = Node(node.val, []) self.memo[node] = p for i in node.neighbors: p.neighbors.append(self.clone(i)) return p

最新回复(0)