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