Clone Graph LeetCode solution in JavaScript

1
var cloneGraph = function (node) {
2
if (!node) return node;
3

4
let queue = [node];
5

6
let map = new Map();
7

8
//1. Create new Copy of each node and save in Map
9
while (queue.length) {
10
let nextQueue = [];
11

12
for (let i = 0; i < queue.length; i++) {
13
let n = queue[i];
14

15
let newN = new Node(n.val);
16

17
if (!map.has(n)) {
18
map.set(n, newN);
19
}
20

21
let nei = n.neighbors;
22

23
for (let j = 0; j < nei.length; j++) {
24
if (map.has(nei[j])) continue;
25
nextQueue.push(nei[j]);
26
}
27
}
28

29
queue = nextQueue;
30
}
31

32
queue = [node];
33

34
let seen = new Set();
35
seen.add(node);
36

37
//2. Run BFS again and populate neighbors in new node created in step 1.
38
while (queue.length) {
39
let nextQueue = [];
40

41
for (let i = 0; i < queue.length; i++) {
42
let n = queue[i];
43

44
let nei = n.neighbors;
45
let newn = map.get(n);
46

47
for (let j = 0; j < nei.length; j++) {
48
newn.neighbors.push(map.get(nei[j]));
49

50
if (!seen.has(nei[j])) {
51
nextQueue.push(nei[j]);
52
seen.add(nei[j]);
53
}
54
}
55
}
56

57
queue = nextQueue;
58
}
59

60
return map.get(node);
61
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0