[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/avidLearnerInProgress/leetcode-solutions/master/clone_graph.cpp [Back]  [Original]

/*
// Definition for a Node.
class Node {
public:
    int val;
    vector neighbors;
    Node() {
        val = 0;
        neighbors = vector();
    }
    Node(int _val) {
        val = _val;
        neighbors = vector();
    }
    Node(int _val, vector _neighbors) {
        val = _val;
        neighbors = _neighbors;
    }
};
*/

class Solution {
public:
    unordered_map map;
    Node* cloneGraph(Node* node) {
        if (node == NULL) return NULL;
        return dfs(node);
    }
    
    Node* dfs(Node* node) {
        if (map.find(node) != map.end()) return map[node];
        Node* clone = new Node(node->val);
        map[node] = clone; // map OLD node to NEW node!
        for (Node* n : node->neighbors)
            clone->neighbors.push_back(dfs(n));
        return clone;
    }
};

Web Proxy Viewer  |  New URL  |  Original Page