您的位置:首页 > 其它

Clone Graph

2015-11-15 10:36 399 查看
Clone an undirected graph. Each node in the graph contains a
label
and a list of its
neighbors
.

/**
* Definition for undirected graph.
* struct UndirectedGraphNode {
*     int label;
*     vector<UndirectedGraphNode *> neighbors;
*     UndirectedGraphNode(int x) : label(x) {};
* };
*/
class Solution{
public:
UndirectedGraphNode* cloneGraph(UndirectedGraphNode* node){
unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> record;
if(!node)
return node;
queue<UndirectedGraphNode*> queue;
queue.push(node);
while(!queue.empty()){
UndirectedGraphNode* nextNode = queue.front();
queue.pop();
if(!record.count(nextNode)){
UndirectedGraphNode* newNode =
new UndirectedGraphNode(nextNode->label);
record[nextNode] = newNode;
}
for(int i=0;i<nextNode->neighbors.size();i++){
UndirectedGraphNode* childNode = nextNode->neighbors[i];
if(!record.count(childNode)){
UndirectedGraphNode* newNode =
new UndirectedGraphNode(childNode->label);
record[childNode] = newNode;
queue.push(childNode);
}
record[nextNode]->neighbors.push_back(record[childNode]);
}
}
return record[node];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: