Skip to content

Commit ec2ac76

Browse files
committed
clone-graph
1 parent cf1696a commit ec2ac76

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

clone-graph/chjung99.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
// Definition for a Node.
3+
class Node {
4+
public int val;
5+
public List<Node> neighbors;
6+
public Node() {
7+
val = 0;
8+
neighbors = new ArrayList<Node>();
9+
}
10+
public Node(int _val) {
11+
val = _val;
12+
neighbors = new ArrayList<Node>();
13+
}
14+
public Node(int _val, ArrayList<Node> _neighbors) {
15+
val = _val;
16+
neighbors = _neighbors;
17+
}
18+
}
19+
*/
20+
21+
class Solution {
22+
public Node cloneGraph(Node node) {
23+
if (node == null) return node;
24+
return deepCopy(node);
25+
}
26+
27+
public Node deepCopy(Node node) {
28+
Deque<Node> deque = new ArrayDeque<>();
29+
Node root = new Node(node.val, new ArrayList<>());
30+
Map<Integer, Node> visit = new HashMap<>();
31+
32+
visit.put(1, root);
33+
deque.add(node);
34+
35+
while (!deque.isEmpty()) {
36+
Node cur = deque.poll();
37+
for (Node next: cur.neighbors) {
38+
if (!visit.containsKey(next.val)){
39+
visit.put(next.val, new Node(next.val, new ArrayList<>()));
40+
deque.add(next);
41+
}
42+
visit.get(cur.val).neighbors.add(visit.get(next.val));
43+
}
44+
}
45+
return root;
46+
}
47+
}
48+
49+

0 commit comments

Comments
 (0)