- 问题描述
Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. 解决思路
深度搜索,广度搜索进行复制都可以。。。关键是用一个map记录哪些节点遍历过,已经有对应关系了。代码
/**
* Definition for undirected graph.
* struct UndirectedGraphNode {
* int label;
* vector<UndirectedGraphNode *> neighbors;
* UndirectedGraphNode(int x) : label(x) {};
* };
*/
class Solution {
public:
map<UndirectedGraphNode*,UndirectedGraphNode*> m;
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
if (!node)
return NULL;
if (m.find(node) == m.end()) {
m[node] = new UndirectedGraphNode(node->label);
for (auto x : node->neighbors) {
m[node]->neighbors.push_back(cloneGraph(x));
}
}
return m[node];
}
};