首页 > 其他 > 详细

Clone Graph

时间:2014-02-25 02:55:27      阅读:216      评论:0      收藏:0      [点我收藏+]

Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.

bubuko.com,布布扣
 1 public class Solution {
 2     public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
 3         if(node==null) return node;
 4         UndirectedGraphNode n1 = new UndirectedGraphNode(node.label);
 5         HashMap<UndirectedGraphNode,UndirectedGraphNode> map = new HashMap<UndirectedGraphNode,UndirectedGraphNode>();
 6         map.put(node,n1);
 7         LinkedList<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>();
 8         queue.offer(node);
 9         while(!queue.isEmpty()){
10             UndirectedGraphNode original = queue.poll();
11             ArrayList<UndirectedGraphNode> ons =  original.neighbors;
12             for(int i=0;i<ons.size();i++){
13                 UndirectedGraphNode on = ons.get(i);
14                 if(!map.containsKey(on)){
15                     queue.offer(on);
16                     UndirectedGraphNode clone = new UndirectedGraphNode(on.label);
17                     map.get(original).neighbors.add(clone);
18                     map.put(on,clone);
19                 }
20                 else{
21                     map.get(original).neighbors.add(map.get(on));
22                 }
23             }
24         }
25         return n1;
26     }
27 }
View Code

Clone Graph

原文:http://www.cnblogs.com/krunning/p/3563989.html

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