original graph
1
2
3
4
call stack
(empty)
DFS with old→new hash map
▸1map = {} // original -> clone2clone(u):3 if u in map: return map[u]4 map[u] = new Node(u.val) // store BEFORE recursing5 for v in u.neighbours:6 copy = clone(v)7 map[u].neighbours.append(copy)8 return map[u]
state
- map old→new{}
- goaldeep copy