File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-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
+ let visited = { } ;
15
+
16
+ const dfs = ( node ) => {
17
+ if ( ! node ) return node ;
18
+ if ( visited [ node . val ] ) return visited [ node . val ] ;
19
+
20
+ let root = new Node ( node . val ) ;
21
+ visited [ node . val ] = root ;
22
+
23
+ for ( let neighbor of node . neighbors ) {
24
+ root . neighbors . push ( dfs ( neighbor ) ) ;
25
+ }
26
+ return root ;
27
+ } ;
28
+
29
+ return dfs ( node ) ;
30
+ } ;
31
+
32
+ // TC: O(n+e) -> n: number of nodes | e: number of edges
33
+ // SC: O(v) -> v: length of visited object
You can’t perform that action at this time.
0 commit comments