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; }