File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ // Definition for a Node.
3+ class Node {
4+ public:
5+ int val;
6+ vector<Node*> neighbors;
7+ Node() {
8+ val = 0;
9+ neighbors = vector<Node*>();
10+ }
11+ Node(int _val) {
12+ val = _val;
13+ neighbors = vector<Node*>();
14+ }
15+ Node(int _val, vector<Node*> _neighbors) {
16+ val = _val;
17+ neighbors = _neighbors;
18+ }
19+ };
20+ */
21+
22+ class Solution {
23+ public:
24+ unordered_map<Node*, Node*> map;
25+ Node* cloneGraph (Node* node) {
26+ if (node == NULL ) return NULL ;
27+ return dfs (node);
28+ }
29+
30+ Node* dfs (Node* node) {
31+ if (map.find (node) != map.end ()) return map[node];
32+ Node* clone = new Node (node->val );
33+ map[node] = clone; // map OLD node to NEW node!
34+ for (Node* n : node->neighbors )
35+ clone->neighbors .push_back (dfs (n));
36+ return clone;
37+ }
38+ };
You can’t perform that action at this time.
0 commit comments