File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Expand file tree Collapse file tree 1 file changed +36
-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 root = new Node ( node . val ) ;
17
+ const stack = [ node ] ;
18
+ const map = new Map ( ) ;
19
+
20
+ map . set ( node . val , new _Node ( node . val ) ) ;
21
+
22
+ while ( stack . length > 0 ) {
23
+ const currentNode = stack . pop ( ) ;
24
+ const newCurrentNode = new Node ( currentNode . val ) ;
25
+
26
+ for ( const neighbor of currentNode . neighbors ) {
27
+ if ( ! map . has ( neighbor . val ) ) {
28
+ map . set ( neighbor . val , new Node ( neighbor . val ) ) ;
29
+ stack . push ( neighbor ) ;
30
+ }
31
+ map . get ( currentNode . val ) . neighbors . push ( map . get ( neighbor . val ) ) ;
32
+ }
33
+
34
+ }
35
+ return map . get ( node . val ) ;
36
+ } ;
You can’t perform that action at this time.
0 commit comments