Skip to content

Commit 9df4c39

Browse files
committed
Added cloneGraph solution
1 parent b23beaf commit 9df4c39

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

clone-graph/nhistory.js

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

0 commit comments

Comments
 (0)