133. Clone Graph

/**
 * 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 NULL;
        if (!copies.count(node)) {
            copies[node] = new UndirectedGraphNode(node->label);
            for (UndirectedGraphNode* nei:(node->neighbors))
                copies[node]->neighbors.push_back(cloneGraph(nei));
        }
        return copies[node];
    }
private:
    unordered_map<UndirectedGraphNode *, UndirectedGraphNode *> copies;
};

results matching ""

    No results matching ""