Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - C++ - 133. Clone Graph
題目:

解答:
/*
// 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) {
unordered_map<Node*, Node*> q;
if (!node) {
return nullptr;
}
auto dfs = [&](this auto&& dfs, Node *cur) -> Node* {
if (q.count(cur)) {
return q[cur];
}
Node *copy = new Node(cur->val);
q[cur] = copy;
for (auto nei : cur->neighbors) {
copy->neighbors.push_back(dfs(nei));
}
return copy;
};
return dfs(node);
}
};