/*
// Definition for a Node.
class Node {
public:
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* cloneGraph(Node* node) {
if (!node)
return nullptr;
queue<Node*> q{{node}};
unordered_map<Node*, Node*> map{{node, new Node(node->val)}};
while (!q.empty()) {
Node* u = q.front();
q.pop();
for (Node* v : u->neighbors) {
if (!map.count(v)) {
map[v] = new Node(v->val);
q.push(v);
}
map[u]->neighbors.push_back(map[v]);
}
}
return map[node];
}
};
leetcode
challenge
Here is the link for the problem:
https://leetcode.com/problems/clone-graph/
Top comments (0)