题目描述
思路分析
暴搜
深拷贝,把每个点每条边都复制一个新的出来。通过映射关系来建立。
代码实现
/*
// 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:
unordered_map<Node*,Node*> hash;
Node* cloneGraph(Node* node) {
if(!node) return NULL;
dfs(node);
for(auto [s,d]:hash){
for(auto t:s->neighbors){
d->neighbors.push_back(hash[t]);
}
}
return hash[node];
}
void dfs(Node* node){
hash[node]=new Node(node->val);
for(auto t:node->neighbors){
if(!hash.count(t)) dfs(t);
}
}
};