Given a reference of a node in a connected undirected graph, return a deep copy (clone) of the graph.
Each node in the graph contains a value (val) and a list of its neighbors (neighbors).
A deep copy means each node in the cloned graph is a new object - not the same object as the original. Modifying the clone must not affect the original.
1 -- 2 | | 4 -- 3
Input: adjList = [[2,4],[1,3],[2,4],[1,3]] Output: [[2,4],[1,3],[2,4],[1,3]] Explanation: Node 1 connects to 2 and 4; the cloned graph has the same structure with all new node objects.
Input: adjList = [[]] Output: [[]] Explanation: A single node with no neighbors is cloned as a new node with val = 1 and no neighbors.
[0, 100]1 <= Node.val <= 100Node.val is unique for each node4-cycle graph: 1-2-3-4-1