Clone Graph
Given a reference of a node in a connected undirected graph, return a deep clone of the graph.
Each node in the graph contains a value (val) and a list of its neighbors (neighbors).
// Node structure:
// { val: number, neighbors: Node[] }