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