Summary
Here it implements a solution to clone a graph represented by a set of unconnected nodes.
In this case, we are implementing the depth-first search (DFS) algorithm to replicate a graph, which is represented by a collection of connected nodes.
Solutions
//User function Template for Java /* class Node{ int val; ArrayList<Node> neighbors; public Node(){ val = 0; neighbors = new ArrayList<>(); }
public Node(int val){ this.val = val; neighbors = new ArrayList<>(); }
public Node(int val, ArrayList<Node> neighbors){ this.val = val; this.neighbors = neighbors; } } */ class Solution{ Node cloneGraph(Node node){
Node start = node; HashSet<Node> visited = new HashSet<>(); HashMap<Node,Node> map = new HashMap<>(); dfs(start,visited,map);
addEdges(map);
return map.get(start);
} public static void addEdges(HashMap<Node,Node> map){ for(Map.Entry m : map.entrySet()){ Node ori = (Node) m.getKey(); map.get(m.getKey()).neighbors.add(ori); } }
public static void dfs(Node start,HashSet<Node> visited,HashMap<Node,Node> map){
visited.add(start); Node copyNode = new Node(start.val); map.put(start,copyNode); for(Node p : start.neighbors){ if(!visited.contains(p)){ dfs(p,visited,map); } }
} } |
Explanation
This class represents a node in the graph.
It has an integer val representing the value of the node, and an ArrayList<Node> called neighbors, representing the neighboring nodes.
Solution class
This class contains the cloneGraph method, which clones the input graph.
It takes a Node object representing the starting node of the original graph.
dfs method
This method performs a depth-first search traversal of the original graph.
addEdges method
This method adds edges to the cloned nodes based on the mappings stored in the map HashMap.
Answered by:> >mogilimanikanta5555
Credit:> >GeekforGeeks
Suggested blogs:
>How to detect whether the linked list has a loop using Java
>How to determine the number of valid groupings for a string using Java
>How to mock a constant value in Python?
>Creating a pivot table by 6 month interval rather than year
>How to Install mariaDB client efficiently inside docker?
>Can I call an API to find out the random seed in Python `hash()` function?
>How remove residual lines after merge two regions using Geopandas in python?