给定连接的无向图中节点的引用,返回图的深度副本(克隆)。图中的每个节点都包含一个val (int)及其邻居的列表(list [node])。
代码
其中,结点详情信息如下:
class Node {
public:
int val;
vector<Node*> neighbors;
Node() {}
Node(int _val, vector<Node*> _neighbors) {
val = _val;
neighbors = _neighbors;
}
};
迭代版本的实现克隆图:
Node* cloneGraph(Node* node) {
if (NULL == node) {
return NULL;
}
unordered_set<Node*> visited;
unordered_map<int, Node*> mapping;
/// iterative
queue<Node*> q;
q.push(node);
Node* first = new Node;
first->val = node->val;
mapping[node->val] = first;
while (!q.empty()) {
Node* curr = q.front();
q.pop();
for (int i = 0; i < curr->neighbors.size(); ++i) {