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