您的位置:首页 > 职场人生

LeetCode 133 Clone Graph

2015-04-21 10:52 836 查看
题目

复制无向图

代码

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 面试笔试