Skip to content

Commit 61b3f1c

Browse files
Merge pull request #28 from aryandeelwal/aryan-branch-coding
Add a Leetcode medium level question - Clone Graph in C++
2 parents 3e31517 + 491808c commit 61b3f1c

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

LeetCode/clone_graph.cpp

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Question Link - https://leetcode.com/problems/clone-graph/
2+
/* Input:
3+
[[2,4],[1,3],[2,4],[1,3]]
4+
*/
5+
/* Output:
6+
[[2,4],[1,3],[2,4],[1,3]]
7+
*/
8+
/*
9+
// Definition for a Node.
10+
class Node {
11+
public:
12+
int val;
13+
vector<Node*> neighbors;
14+
Node() {
15+
val = 0;
16+
neighbors = vector<Node*>();
17+
}
18+
Node(int _val) {
19+
val = _val;
20+
neighbors = vector<Node*>();
21+
}
22+
Node(int _val, vector<Node*> _neighbors) {
23+
val = _val;
24+
neighbors = _neighbors;
25+
}
26+
};
27+
*/
28+
class Solution {
29+
private:
30+
Node* dfs(Node* curr, unordered_map<Node*,Node*>& mp)
31+
{
32+
vector<Node*> neighbor;
33+
Node* clone = new Node(curr->val);
34+
mp[curr] = clone;
35+
for(auto it : curr->neighbors)
36+
{
37+
if(mp.find(it) != mp.end()) { //already cloned and stored in map
38+
neighbor.push_back(mp[it]);
39+
}
40+
else {
41+
neighbor.push_back(dfs(it,mp));
42+
}
43+
}
44+
clone->neighbors = neighbor;
45+
return clone;
46+
}
47+
public:
48+
Node* cloneGraph(Node* node) {
49+
unordered_map<Node*,Node*> mp;
50+
if(node == NULL)
51+
return NULL;
52+
if(node->neighbors.size() == 0)
53+
{
54+
Node* clone = new Node(node->val);
55+
return clone;
56+
}
57+
return dfs(node,mp);
58+
}
59+
};

0 commit comments

Comments
 (0)