BFS+HashMap
这一题和138. Copy List with Random Pointer很像
中心思想是用hashmap来讲原始的node和copy的node一一对应起来。
Graph的遍历就是用BFS,没什么好说的
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> neighbors;
public Node() {}
public Node(int _val,List<Node> _neighbors) {
val = _val;
neighbors = _neighbors;
}
};
*/
class Solution {
public Node cloneGraph(Node node) {
if(node==null) return null;
Queue<Node> Q = new LinkedList<Node>();
Q.offer(node);
HashMap<Node,Node> map =new HashMap<Node,Node>();
map.put(node, new Node(node.val,new ArrayList<Node>()));
while(!Q.isEmpty()){
Node n = Q.poll();
for(Node neighbor:n.neighbors){
if(!map.containsKey(neighbor)){
Q.offer(neighbor);
map.put(neighbor,new Node(neighbor.val,new ArrayList<Node>()));
}
map.get(n).neighbors.add(map.get(neighbor));
}
}
return map.get(node);
}
}