Search⌘ K
AI Features

Problem: Clone Graph

Explore how to create a deep copy of a connected undirected graph using breadth-first search. Learn to use a hash map to track cloned nodes, prevent cycles, and replicate neighbor lists accurately. Understand the time and space complexity of this approach to improve graph algorithm skills.

Statement

You are given a reference to a node in a connected, undirected graph. Your task is to return a deep copy (clone) of the entire graph.

Each node in the graph contains:

  • An integer value (data)

  • A list of its neighboring nodes (neighbors)

Examples

canvasAnimation-image
1 / 3

Try it yourself!

Implement your solution in the following coding playground.

JavaScript
usercode > CloneGraph.js
import {Node} from "./Node.js"
function clone(root){
// Replace this placeholder return statement with your code
return root;
}
export { clone };
Clone Graph

Solution

The core idea behind cloning a connected, undirected graph is to traverse the original graph using breadth-first search (BFS) while simultaneously building a copy of each node and replicating the neighbor relationships. We use a hash map (cloneMap) that maps each original node to its corresponding cloned node. This serves two purposes: it tracks which nodes have already been visited (preventing infinite loops in the undirected graph) and provides constant-time access to the cloned counterpart of any original node when wiring up neighbor lists. Starting from the given node, we explore level by level. For every neighbor encountered, we either create a new clone (if unseen) or retrieve the existing clone, then append it to the current cloned node’s neighbors list.

Now, let’s look at the solution steps below:

  1. If the input node is null, return null immediately, since there is no graph to clone. ...