Clone Graph
Try to solve the Clone Graph problem.
Statement
You are given a reference to a single node in an undirected, connected graph. Your task is to create a deep copy of the graph starting from this node. A deep copy means creating a new instance of every node in the graph with the same data and edges as the original graph, such that changes in the copied graph do not affect the original graph.
From the programming perspective, the graph is represented as an adjacency list to understand node relationships. Each node in the adjacency list corresponds to a node in the graph, and the list of neighbors describes that node’s connections. For example, for
Constraints:
Number of nodes Node.data
Node.data
is unique for each node.The graph is undirected, i.e., there are no self-loops or repeated edges.
The graph is connected, i.e., any node can be visited from a given node.
Examples
Understand the problem
Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps us to check if you’re solving the correct problem:
Clone Graph
Which graph is made from the given adjacency list?
[[2, 5], [1, 3], [2, 4], [3, 5], [1, 4]]
3-------1
| \
| 2
| /
5--------4
1-------5
| \
| 3
| /
2--------4
1-------2
| \
| 3
| /
5--------4
1-------2
| \
| 5
| /
3--------4
Figure it out!
We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.
Try it yourself
Implement your solution in CloneGraph.java
in the following coding playground.
import java.util.*;public class CloneGraph{public static Node clone(Node root) {// Replace this placeholder return statement with your codereturn root;}}