File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed
Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ // v: len(vertexes), e: len(edges)
2+ // Time complexity: O(v + e)
3+ // Space complexity: O(v + e)
4+
5+ /**
6+ * // Definition for a _Node.
7+ * function _Node(val, neighbors) {
8+ * this.val = val === undefined ? 0 : val;
9+ * this.neighbors = neighbors === undefined ? [] : neighbors;
10+ * };
11+ */
12+
13+ /**
14+ * @param {_Node } node
15+ * @return {_Node }
16+ */
17+ var cloneGraph = function ( node ) {
18+ const nodes = Array . from ( { length : 101 } , ( _ , i ) => null ) ;
19+
20+ const dfs = ( node ) => {
21+ if ( ! node ) {
22+ return ;
23+ }
24+
25+ if ( nodes [ node . val ] ) {
26+ return nodes [ node . val ] ;
27+ }
28+
29+ const newNode = new _Node ( node . val ) ;
30+ nodes [ node . val ] = newNode ;
31+
32+ for ( const neighbor of node . neighbors ) {
33+ const cloned = dfs ( neighbor ) ;
34+ newNode . neighbors . push ( cloned ) ;
35+ }
36+
37+ return newNode ;
38+ } ;
39+
40+ dfs ( node ) ;
41+
42+ return nodes [ 1 ] ;
43+ } ;
You can’t perform that action at this time.
0 commit comments