LeetCode 133. 克隆图
题目类型
- 深拷贝
- dfs
题目链接
思路
- 由于是无向边,使用哈希表(原图,克隆图)避免dfs的时候产生回路,死循环
- 写一个dfs函数,遍历所有点并把点加入哈希表
- 接着遍历所有点
AC代码
class Solution {
public:
// (原图的结点,克隆图的结点)
unordered_map<Node*, Node*> visited;
Node* cloneGraph(Node* node) {
if (!node) return NULL;
// 复制所有点
dfs(node);
// 复制边
for (auto [s, d] : visited)
{
// 原图点s的邻点集ver 放入克隆图的点d的邻点集中
for (auto ver : s->neighbors)
{
d->neighbors.push_back(visited[ver]);
}
}
return visited[node];
}
void dfs(Node* node)
{
// 复制结点
visited[node] = new Node(node->val);
// 遍历该点的所有邻点
for (auto ver : node->neighbors)
{
if (visited.count(ver) == 0) dfs(ver);
}
}
};
##
题目类型
思路
AC代码
##【未完待更】