File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * // Definition for a _Node.
3
+ * function _Node(val, neighbors) {
4
+ * this.val = val === undefined ? 0 : val;
5
+ * this.neighbors = neighbors === undefined ? [] : neighbors;
6
+ * };
7
+ */
8
+
9
+ /**
10
+ * @param {_Node } node
11
+ * @return {_Node }
12
+ */
13
+ var cloneGraph = function ( node ) {
14
+ if ( ! node ) return null ;
15
+
16
+ const stack = [ node ] ;
17
+ const map = new Map ( ) ;
18
+
19
+ map . set ( node . val , new _Node ( node . val ) ) ;
20
+
21
+ while ( stack . length > 0 ) {
22
+ const currentNode = stack . pop ( ) ;
23
+
24
+ for ( const neighbor of currentNode . neighbors ) {
25
+ if ( ! map . has ( neighbor . val ) ) {
26
+ map . set ( neighbor . val , new Node ( neighbor . val ) ) ;
27
+ stack . push ( neighbor ) ;
28
+ }
29
+ map . get ( currentNode . val ) . neighbors . push ( map . get ( neighbor . val ) ) ;
30
+ }
31
+
32
+ }
33
+ return map . get ( node . val ) ;
34
+ } ;
35
+
36
+
37
+ // 시간복잡도: O(n)
38
+ // 공간복잡도: O(n)
You can’t perform that action at this time.
0 commit comments