Skip to content

Commit 1e53764

Browse files
clone graph solution
1 parent 07eb9b1 commit 1e53764

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

โ€Žclone-graph/jaejeong1.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import java.util.ArrayList;
2+
import java.util.HashMap;
3+
import java.util.LinkedList;
4+
import java.util.List;
5+
import java.util.Map;
6+
import java.util.Queue;
7+
8+
// Definition for a Node.
9+
class Node {
10+
public int val;
11+
public List<Node> neighbors;
12+
public Node() {
13+
val = 0;
14+
neighbors = new ArrayList<Node>();
15+
}
16+
public Node(int _val) {
17+
val = _val;
18+
neighbors = new ArrayList<Node>();
19+
}
20+
public Node(int _val, ArrayList<Node> _neighbors) {
21+
val = _val;
22+
neighbors = _neighbors;
23+
}
24+
}
25+
26+
27+
class Solution {
28+
// ํ’€์ด: BFS ๋ฐฉ์‹์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ํ˜„์žฌ ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์„ ๋ณต์ œ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ณต์ œ ๋˜๋Š” ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค
29+
// TC: O(N)
30+
// SC: O(N)
31+
public Node cloneGraph(Node node) {
32+
if (node == null) {
33+
return null;
34+
}
35+
36+
Map<Node, Node> cloneMap = new HashMap<>();
37+
Node clone = new Node(node.val);
38+
cloneMap.put(node, clone);
39+
40+
Queue<Node> queue = new LinkedList<>();
41+
queue.add(node);
42+
43+
while (!queue.isEmpty()) {
44+
Node current = queue.poll();
45+
46+
for (Node neighbor : current.neighbors) {
47+
if (!cloneMap.containsKey(neighbor)) {
48+
cloneMap.put(neighbor, new Node(neighbor.val));
49+
queue.add(neighbor);
50+
}
51+
cloneMap.get(current).neighbors.add(cloneMap.get(neighbor));
52+
}
53+
}
54+
return clone;
55+
}
56+
}

0 commit comments

Comments
ย (0)