Given a reference to a node in a connected undirected graph, return a deep copy (clone). Each node has val and neighbors. HashMap maps original→clone; register clone before recursing to break cycles.
adjList = [[2,4],[1,3],[2,4],[1,3]][[2,4],[1,3],[2,4],[1,3]] (cloned)Putting the clone in the map before recursing into neighbors is critical. Otherwise, in a cycle (1↔2), DFS would: visit 1 → recurse to 2 → recurse to 1 → infinite recursion. With map: visit 1 → put clone1 → recurse to 2 → recurse to 1 → cache hit, return clone1.