Clone Graph

Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.

  • Time: O(n)
  • Space: O(1)
public UndirectedGraphNode cloneGraphBFS(UndirectedGraphNode node) {
    if (node == null) return null;
    Map<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<>();
    Queue<UndirectedGraphNode> queue = new LinkedList<>();
    queue.offer(node);
    map.put(node, new UndirectedGraphNode(node.label));
    while (!queue.isEmpty()) {
        UndirectedGraphNode n = queue.poll();
        for (UndirectedGraphNode a : n.neighbors) {
            if (!map.containsKey(a)) {
                map.put(a, new UndirectedGraphNode(a.label));
                queue.offer(a);
            }
            map.get(n).neighbors.add(map.get(a));
        }
    }
    return map.get(node);
}

results matching ""

    No results matching ""