Skip to content

Commit 689e1c9

Browse files
Create clone_graph.cpp
1 parent 573aac9 commit 689e1c9

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

clone_graph.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
};

0 commit comments

Comments
 (0)