class Solution { public Node cloneGraph(Node node) { if (node == null) return node; Deque<Node> queue = new ArrayDeque<>(); Map<Node, Node> map = new HashMap(); queue.offerFirst(node); Node root = new Node(node.val, new ArrayList<Node>()); map.put(node, root); while (!queue.isEmpty()) { Node cur = queue.pollLast(); Node cloneCur = map.getOrDefault(cur, new Node(cur.val, new ArrayList<Node>())); List<Node> cloneNeighbors = new ArrayList<>(); for (Node neighbor : cur.neighbors) { if (!map.containsKey(neighbor)) { map.put(neighbor, new Node(neighbor.val, new ArrayList<Node>())); queue.add(neighbor); } map.get(cur).neighbors.add(map.get(neighbor)); } } return root; } }
|