Advertisement
sweet1cris

Untitled

Sep 25th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.77 KB | None | 0 0
  1. public class DeepCopyUGraph {
  2.   public List<GraphNode> copy(List<GraphNode> graph) {
  3.     if (graph == null) {
  4.       return null;
  5.     }
  6.     HashMap<GraphNode, GraphNode> map = new HashMap<GraphNode, GraphNode>();
  7.     for (GraphNode node : graph) {
  8.       if (!map.containsKey(node)) {
  9.         map.put(node, new GraphNode(node.key));
  10.         DFS(node, map);
  11.       }
  12.     }
  13.     return new ArrayList<GraphNode>(map.values());
  14.   }
  15.  
  16.   private void DFS(GraphNode seed, HashMap<GraphNode, GraphNode> map) {
  17.     GraphNode copy = map.get(seed);
  18.     for (GraphNode nei : seed.neighbors) {
  19.       if (!map.containsKey(nei)) {
  20.         map.put(nei, new GraphNode(nei.key));
  21.         DFS(nei, map);
  22.       }
  23.       copy.neighbors.add(map.get(nei));
  24.     }
  25.   }
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement