https://leetcode.com/problems/clone-graph/description/
脑残了,因为没有clear() map ,WA了好几次。。。 想好递归的结构 DFS很容易过掉
unordered_map<int, UndirectedGraphNode*> visit;
class Solution {
public:
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
if (!node) return node;
visit.clear();
UndirectedGraphNode* ans = clone(node);//new UndirectedGraphNode(node->x);
// clone(node, ans);
return ans;
}
UndirectedGraphNode * clone(UndirectedGraphNode* raw) {
if (!raw) return NULL;
UndirectedGraphNode* ret = new UndirectedGraphNode(raw->label);
visit[raw->label] = ret;
for (int i = 0; i < raw->neighbors.size(); i++) {
if (visit.find(raw->neighbors[i]->label) == visit.end()) {
// visit[ raw->neighbors[i]->label ] = clone(raw->neighbors[i]);
ret->neighbors.push_back( clone(raw->neighbors[i]) );
// cout << "clone:" << raw->neighbors[i]->label << endl;
} else {
ret->neighbors.push_back( visit[ raw->neighbors[i]->label ] );
}
}
return ret;
}
};