Skip to content

Commit 2ca4b36

Browse files
committed
feat: 133. Clone Graph
1 parent 37a35e4 commit 2ca4b36

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

clone-graph/gwbaik9717.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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+
};

0 commit comments

Comments
 (0)