Skip to content

Commit 258b308

Browse files
committed
add clone graph solution
1 parent b7d8d87 commit 258b308

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

โ€Žclone-graph/Tessa1217.javaโ€Ž

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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+
import java.util.HashMap;
22+
import java.util.Map;
23+
24+
/**
25+
* ์ฐธ์กฐ ๋…ธ๋“œ๋Š” ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค. ๊ทธ๋ž˜ํ”„์˜ deep copy(clone)์„ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”.
26+
*/
27+
class Solution {
28+
29+
// ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋ฅผ ๊ธฐ์–ตํ•  Map ์„ ์–ธ
30+
Map<Node, Node> visited = new HashMap<>();
31+
32+
public Node cloneGraph(Node node) {
33+
return clone(node);
34+
}
35+
36+
public Node clone(Node node) {
37+
if (node == null) {
38+
return null;
39+
}
40+
41+
// ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ์œผ๋ฉด Map์—์„œ ๊บผ๋‚ด์„œ ๋ฐ˜ํ™˜
42+
if (visited.containsKey(node)) {
43+
return visited.get(node);
44+
}
45+
46+
// ์‹ ๊ทœ Node ์ƒ์„ฑ
47+
Node newNode = new Node(node.val);
48+
visited.put(node, newNode);
49+
50+
// ์ธ์ ‘ ๋…ธ๋“œ Clone
51+
if (node.neighbors != null && !node.neighbors.isEmpty()) {
52+
for (Node neighbor : node.neighbors) {
53+
newNode.neighbors.add(clone(neighbor));
54+
}
55+
}
56+
return newNode;
57+
}
58+
}
59+

0 commit comments

Comments
ย (0)