题目
复制无向图
代码
public class Solution {
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if(node == null){
return null;
}
HashMap<UndirectedGraphNode,UndirectedGraphNode> record = new HashMap<UndirectedGraphNode,UndirectedGraphNode>();
LinkedList<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>();
UndirectedGraphNode copyhead = new UndirectedGraphNode(node.label);
record.put(node,copyhead);
queue.add(node);
while(!queue.isEmpty()){
UndirectedGraphNode cur = queue.poll();
List<UndirectedGraphNode> neighbors = cur.neighbors;
UndirectedGraphNode copyCur = record.get(cur);
for(int i= 0;i<neighbors.size();i++){
UndirectedGraphNode curNeighbor = neighbors.get(i);
if(record.containsKey(curNeighbor)){
UndirectedGraphNode copycurNeighbor = record.get(curNeighbor);
copyCur.neighbors.add(copycurNeighbor);
}
else{
UndirectedGraphNode copycurNeighbor = new UndirectedGraphNode(curNeighbor.label);
copyCur.neighbors.add(copycurNeighbor);
record.put(curNeighbor,copycurNeighbor);
queue.add(curNeighbor);
}
}
}
return copyhead;
}
}
public class Solution {
public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
if(node == null){
return null;
}
HashMap<UndirectedGraphNode,UndirectedGraphNode> record = new HashMap<UndirectedGraphNode,UndirectedGraphNode>();
UndirectedGraphNode copyhead = new UndirectedGraphNode(node.label);
record.put(node,copyhead);
useme(record,node);
return copyhead;
}
public void useme(HashMap<UndirectedGraphNode,UndirectedGraphNode> record,UndirectedGraphNode node){
for(int i=0;i<node.neighbors.size();i++){
UndirectedGraphNode curNeighbor = node.neighbors.get(i);
if(!record.containsKey(curNeighbor)){
UndirectedGraphNode copyCurNeighbor = new UndirectedGraphNode(curNeighbor.label);
record.put(curNeighbor,copyCurNeighbor);
useme(record,curNeighbor);
}
record.get(node).neighbors.add(record.get(curNeighbor));
}
}
}
典型的DFS和BFS