您的位置:首页 > 其它

leetcode做题总结,题目Clone Graph 133

2015-01-27 04:38 585 查看
题目是复制一个图,方法是使用广度优先历遍,然后使用HASHMAP判断重复然后放入队列。像这种clone或者两者比较的题目有个好的方法是使用map使他们之间建立映射。

public class Solution {
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if(node == null)
return null;

Queue<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>();
HashMap<UndirectedGraphNode, UndirectedGraphNode> map =
new HashMap<UndirectedGraphNode,UndirectedGraphNode>();

UndirectedGraphNode newHead = new UndirectedGraphNode(node.label);

queue.offer(node);
map.put(node, newHead);

while(!queue.isEmpty()){
UndirectedGraphNode curr = queue.poll();
//List<UndirectedGraphNode> currNeighbors = curr.neighbors;

for(UndirectedGraphNode aNeighbor: curr.neighbors){
if(!map.containsKey(aNeighbor)){
UndirectedGraphNode copy = new UndirectedGraphNode(aNeighbor.label);
map.put(aNeighbor,copy);
map.get(curr).neighbors.add(copy);
queue.add(aNeighbor);
}else{
map.get(curr).neighbors.add(map.get(aNeighbor));
}
}

}
return newHead;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: