您的位置:首页 > 编程语言 > Java开发

[Leetcode] Clone Graph (Java)

2014-02-14 15:44 495 查看
Clone an undirected graph. Each node in the graph contains a
label
and
a list of its
neighbors
.

拷贝无向图

public class Solution {
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {

if(node==null)
return null;

UndirectedGraphNode ret = new UndirectedGraphNode(node.label);
Map<Integer,UndirectedGraphNode> map = new HashMap<Integer, UndirectedGraphNode>();
Queue<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>();

map.put(ret.label, ret);
queue.offer(node);
queue.offer(ret);

while(!queue.isEmpty()){
UndirectedGraphNode prev = queue.poll();
UndirectedGraphNode clone = queue.poll();
for(UndirectedGraphNode u : prev.neighbors){
if(map.containsKey(u.label)){
clone.neighbors.add(map.get(u.label));
}else {
UndirectedGraphNode tmp = new UndirectedGraphNode(u.label);
map.put(u.label,tmp);
queue.offer(u);
queue.offer(tmp);
clone.neighbors.add(tmp);
}
}
}
return ret;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: