133 Clone Graph
1: 1,2
2: 1,3/**
* Definition for undirected graph.
* struct UndirectedGraphNode {
* int label;
* vector<UndirectedGraphNode *> neighbors;
* UndirectedGraphNode(int x) : label(x) {};
* };
*/
class Solution {
public:
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
if (!node) return nullptr;
if (!mem.count(node)) {
mem[node] = new UndirectedGraphNode(node->label);
for (auto &neighbor : node->neighbors) {
// we've already mapped the node, so mem[node] references the new address
mem[node]->neighbors.push_back(cloneGraph(neighbor));
}
}
return mem[node];
}
private:
unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> mem;
};Last updated