[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);
}
}
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);
}
}
相关文章推荐
- LeetCode 133 Clone Graph (BFS || DFS)
- Java for LeetCode 133 Clone Graph
- LeetCode133:Clone Graph
- leetcode做题总结,题目Clone Graph 133
- leetcode_c++:图:Clone Graph(133)
- leetcode 133 clone-graph 克隆图(图的遍历算法)
- [leetcode 133]Clone Graph
- leetcode 133: Clone Graph
- Leetcode 133 Clone Graph
- Leetcode 133 Clone Graph
- LeetCode(133) Clone Graph
- [leetcode] 133 Clone Graph
- [LeetCode] Clone Graph(!!!!graph&dfs&bfs)
- LeetCode133 Clone Graph
- Clone Graph [leetcode] dfs和bfs
- leetcode -- Clone Graph -- deep copy问题,dfs,bfs
- LeetCode: Clone Graph [133]
- leetcode[133]Clone Graph
- Clone Graph leetcode java(DFS and BFS 基础)
- LeetCode(133)Clone a Graph