File tree Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Expand file tree Collapse file tree 1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change 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+
You canโt perform that action at this time.
0 commit comments