-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCloneAnUndirectedGraph.cpp
43 lines (41 loc) · 1005 Bytes
/
CloneAnUndirectedGraph.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//User function Template for C++
// struct Node {
// int val;
// vector<Node*> neighbors;
// Node() {
// val = 0;
// neighbors = vector<Node*>();
// }
// Node(int _val) {
// val = _val;
// neighbors = vector<Node*>();
// }
// Node(int _val, vector<Node*> _neighbors) {
// val = _val;
// neighbors = _neighbors;
// }
// };
class Solution {
public:
Node* rec(Node* node,map<Node*, Node*>&mp )
{
Node* copyNode= new Node(node->val);
mp[node]=copyNode;
vector<Node*>copyNeighbors;
for (auto it: node->neighbors)
{
if (mp.find(it)!=mp.end())
copyNeighbors.push_back(mp[it]);
else
{
copyNeighbors.push_back(rec(it,mp));
}
}
copyNode->neighbors=copyNeighbors;
return copyNode;
}
Node* cloneGraph(Node* node) {
map<Node* , Node*>mp;
return rec(node,mp);
}
};