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