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