diff --git a/src/main/java/leet/book/queueStack/CloneGraph.java b/src/main/java/leet/book/queueStack/CloneGraph.java new file mode 100644 index 0000000..d23c24d --- /dev/null +++ b/src/main/java/leet/book/queueStack/CloneGraph.java @@ -0,0 +1,53 @@ +package leet.book.queueStack; + +import java.util.*; + +/** + * Created with IntelliJ IDEA. + * + * @author: 轩辕龙儿 + * @date: 2021/7/2 13:43 + * @Description: No Description + */ +public class CloneGraph { + class Node { + public int val; + public List neighbors; + + public Node() { + val = 0; + neighbors = new ArrayList(); + } + + public Node(int _val) { + val = _val; + neighbors = new ArrayList(); + } + + public Node(int _val, ArrayList _neighbors) { + val = _val; + neighbors = _neighbors; + } + } + + class Solution { + private HashMap use = new HashMap <> (); + public Node cloneGraph(Node node) { + if (node == null) { + return node; + } + + if (use.containsKey(node)) { + return use.get(node); + } + + Node cloneNode = new Node(node.val, new ArrayList()); + use.put(node, cloneNode); + + for (Node neighbor: node.neighbors) { + cloneNode.neighbors.add(cloneGraph(neighbor)); + } + return cloneNode; + } + } +}