您的位置:首页 > 其它

[leetcode] 133 clone graph bfs

2015-01-10 13:25 417 查看
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">bfs:</span>
1. 一个HashMap<Node, Node>来找对应的cloned node

2. 一个queue<Node>来装frontier

3. 一边建node一边连接node

/**
* Definition for undirected graph.
* class UndirectedGraphNode {
* int label;
* List<UndirectedGraphNode> neighbors;
* UndirectedGraphNode(int x) { label = x; neighbors = new ArrayList<UndirectedGraphNode>(); }
* };
* 9:34
*/
public class Solution {
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if (node==null) return null;
HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<UndirectedGraphNode,UndirectedGraphNode>();
Queue<UndirectedGraphNode> frontier = new LinkedList<UndirectedGraphNode>();
UndirectedGraphNode clone = new UndirectedGraphNode(node.label);
map.put(node, clone);
frontier.add(node);
while (!frontier.isEmpty()) {
UndirectedGraphNode cur = frontier.remove();
clone = map.get(cur);
for (UndirectedGraphNode n: cur.neighbors) {
if (map.containsKey(n)) clone.neighbors.add(map.get(n));
else {
UndirectedGraphNode newNode = new UndirectedGraphNode(n.label);
map.put(n, newNode);
clone.neighbors.add(newNode);
frontier.add(n);
}
}
}
return map.get(node);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: