首页 > 其他 > 详细

[Algo] 132. Deep Copy Undirected Graph

时间:2020-02-26 12:00:12      阅读:72      评论:0      收藏:0      [点我收藏+]

Make a deep copy of an undirected graph, there could be cycles in the original graph.

Assumptions

  • The given graph is not null
/*
* class GraphNode {
*   public int key;
*   public List<GraphNode> neighbors;
*   public GraphNode(int key) {
*     this.key = key;
*     this.neighbors = new ArrayList<GraphNode>();
*   }
* }
*/
public class Solution {
  public List<GraphNode> copy(List<GraphNode> graph) {
    // Write your solution here.
    Map<GraphNode, GraphNode> map = new HashMap<>();
    for (GraphNode node : graph) {
      if (!map.containsKey(node)) {
        map.put(node, new GraphNode(node.key));
      }
      dfs(node, map);
    }
    return new ArrayList<>(map.values());
  }

  private void dfs(GraphNode node, Map<GraphNode, GraphNode> map) {
    GraphNode newNode = map.get(node);
    for (GraphNode gNode : node.neighbors) {
      if (!map.containsKey(gNode)) {
        map.put(gNode, new GraphNode(gNode.key));
      }
      newNode.neighbors.add(map.get(gNode));
    }
  }
}

 

[Algo] 132. Deep Copy Undirected Graph

原文:https://www.cnblogs.com/xuanlu/p/12366061.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!