Clone Graph
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
public class Solution {
private Map<Integer, UndirectedGraphNode> map = new HashMap<>();
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
return clone(node);
}
private UndirectedGraphNode clone(UndirectedGraphNode node) {
if (node == null) return null;
if (map.containsKey(node.label)) {
return map.get(node.label);
}
UndirectedGraphNode clone = new UndirectedGraphNode(node.label);
map.put(clone.label, clone);
for (UndirectedGraphNode neighbor : node.neighbors) {
clone.neighbors.add(clone(neighbor));
}
return clone;
}
}
from collections import deque
class Solution:
def cloneGraph(self, node: 'Node') -> 'Node':
q = deque([node])
mapping ={node : Node(node.val,[])}
while q:
n =q.popleft()
for i in n.neighbors:
if i not in mapping:
mapping[i] = Node(i.val,[])
q.append(i)
mapping[n].neighbors.append(mapping[i])
return mapping[node]