133. Clone Graph 发表于 2022-07-16 1234567891011121314151617181920212223242526272829303132333435class Solution { public Node cloneGraph(Node node) { if (node == null) { return null; } Map<Node, Node> originalToCloneNodeMap = new IdentityHashMap<>(); return cloneNode(node, originalToCloneNodeMap); } private List<Node> cloneNeighbors(List<Node> neighbors, Map<Node, Node> originalToCloneNodeMap) { if (neighbors.isEmpty()) { return Collections.emptyList(); } List<Node> cloneNeighbors = new ArrayList<>(neighbors.size()); for (Node node : neighbors) { cloneNeighbors.add(cloneNode(node, originalToCloneNodeMap)); } return cloneNeighbors; } private Node cloneNode(Node node, Map<Node, Node> originalToCloneNodeMap) { Node cloneNode = originalToCloneNodeMap.get(node); if (cloneNode != null) { return cloneNode; } cloneNode = new Node(node.val); originalToCloneNodeMap.put(node, cloneNode); cloneNode.neighbors = cloneNeighbors(node.neighbors, originalToCloneNodeMap); return cloneNode; }} Reference133. Clone Graph