您的位置:首页 > 其它

LeetCode 133 Clone Graph

2018-11-10 15:12 375 查看

LeetCode 133 Clone Graph

题目的意思是,给你一个图,你给他返回一个复制的图。
所有的节点你都需要自己New 而不能用他给的参数赋值,因为那是个指针。

每个节点的label都是唯一的,由于存在环,防止无限递归,可以用map将创建的节点存起来。

c++

class Solution {
public:
UndirectedGraphNode* ans;
map<int,UndirectedGraphNode*> vis;
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
if(node==NULL)
return ans;
ans = new UndirectedGraphNode(node->label);
vis[ans->label] = ans;
dfs(node,ans);
return ans;
}

void dfs(UndirectedGraphNode *node,UndirectedGraphNode *ans)
{
int l=node->neighbors.size();
for(int i=0;i<l;i++)
{
if(vis[node->neighbors[i]->label]==NULL)
{
vis[node->neighbors[i]->label] = new UndirectedGraphNode(node->neighbors[i]->label);
ans->neighbors.push_back( vis[node->neighbors[i]->label]);

dfs(node->neighbors[i],ans->neighbors[i]);
}
else
ans->neighbors.push_back(vis[node->neighbors[i]->label]);

}
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: