先深搜建立所有点,加入哈希表。再遍历哈希表,按照拷贝前后的结点,拷贝边。最后返回某一结点,即为所求。
class Solution {
public:
unordered_map<Node*,Node*> mp;
Node* cloneGraph(Node* node) {
if(!node) return node;
dfs(node);
for(auto &[s,d]:mp)
for(auto &e:s->neighbors)
d->neighbors.push_back(mp[e]);
return mp[node];
}
void dfs(Node *node) {
mp[node] = new Node(node->val);
for(auto &v:node->neighbors)
if(!mp.count(v)) dfs(v);
}
};