解題思路
用 map 紀錄走訪過該 node 與否,並用 DFS 看過整張圖。
程式碼
class Solution {
public:
map<Node*, Node*> oldToNew;
Node* dfs(Node* node)
{
if(oldToNew.count(node))
return oldToNew[node];
Node* clone = new Node(node->val);
oldToNew[node] = clone;
for(int i=0; i<node->neighbors.size(); i++)
{
clone->neighbors.push_back(dfs(node->neighbors[i]));
}
return clone;
}
Node* cloneGraph(Node* node) {
if(node == nullptr)
return nullptr;
return dfs(node);
}
};
沒有留言:
張貼留言