Clone Graph
BFS
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(node==NULL)
return NULL;
map<UndirectedGraphNode*, UndirectedGraphNode*> nmap;
UndirectedGraphNode* copynode = new UndirectedGraphNode(node->label);
nmap[node] = copynode;
queue<UndirectedGraphNode*> q;
q.push(node);
while(!q.empty())
{
UndirectedGraphNode* cur = q.front();
q.pop();
int n = cur->neighbors.size();
for(int i=0;i<n;i++)
{
if(nmap.find(cur->neighbors[i])==nmap.end()) //not created
{
UndirectedGraphNode* copy = new UndirectedGraphNode(cur->neighbors[i]->label);
nmap[cur]->neighbors.push_back(copy);
nmap[cur->neighbors[i]] = copy;
q.push(cur->neighbors[i]);
}else
nmap[cur]->neighbors.push_back(nmap[cur->neighbors[i]]);
}
}
return copynode;
}
浙公网安备 33010602011771号