Similar Problems

Similar Problems not available

Clone Graph - Leetcode Solution

LeetCode:  Clone Graph Leetcode Solution

Difficulty: Medium

Topics: breadth-first-search hash-table depth-first-search graph  

Problem Statement:

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 val (int) and a list (List[Node]) of its neighbors.

class Node {
    public int val;
    public List<Node> neighbors;
}

Test Input Reasoning:

We test with the minimum input first.

Input:
{}
Output:
{}

Test Output Reasoning:

Since there are no nodes in the graph, the output will also result in an empty graph.

GraphNode: {}

Test Input Reasoning:

We test the solution approach when given a graph with one node and no neighbours.

Input:
{0,[]}
Output:
{0,[]}

Test Output Reasoning:

In this test case, there is only one node in the graph and it has no neighbouring nodes. The output will result in a similar graph.

GraphNode: {
  0
}

Test Input Reasoning:

We test the solution output when given a graph with one node and one neighbour.

Input:
{0,[[1]]}
Output
{0,[[1]]}

Test Output Reasoning:

In this test case, there is only one node in the graph and it has one neighbouring node. The output will result in a similar graph with the nodes interconnected properly.

GraphNode:{
  0 --- 1
}

Test Input Reasoning:

We test the solution approach when given a graph with multiple nodes.

Input:
{0, [[1, 2], [2]], [3, 4], [4,[]], [5, [6]], [6,[]]]
Output:
{0,[[1,2],[2]],[3,4],[4,[]],[5,[6]],[6,[]]}

Test Output Reasoning:

In this test case, the graph has 6 nodes and each node is inter-connected with other nodes. The output will be a deep copy of the input graph preserving the node values and the edges.

GraphNode:{
  0----1
  |    |
  |    2
  3----4
  5----6
}

Test Input Reasoning:

We test the solution approach when given a graph with multiple nodes and varying degrees of connectivity.

Input:
{0, [[1,2]], [1,[2]], [2,[]]]
Output:
{0,[[1,2]],[1,[2]],[2,[]]]

Test Output Reasoning:

In this test case, the graph has 3 nodes and not all nodes are interconnected. The output will preserve the node values and the edges as well as the degree of connectivity from the input graph.

{
  0--|
      V
     [1]--->[2]
}

Clone Graph Solution Code

1