import java.util.HashMap; import java.util.Map; class Solution { public Node cloneGraph(Node node) { if (node == null) return null; Map map = new HashMap<>(); return clone(node, map); } private Node clone(Node node, Map map) { if (map.containsKey(node)) { return map.get(node); } Node clonedNode = new Node(node.val); map.put(node, clonedNode); for (Node neighbor : node.neighbors) { clonedNode.neighbors.add(clone(neighbor, map)); } return clonedNode; } }