# [leetcode] 133.Clone Graph

Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.

OJ’s undirected graph serialization:
Nodes are labeled uniquely.

We use # as a separator for each node, and , as a separator for node label and each neighbor of the node.
As an example, consider the serialized graph {0,1,2#1,2#2,2}.

The graph has a total of three nodes, and therefore contains three parts as separated by #.

First node is labeled as 0. Connect node 0 to both nodes 1 and 2.
Second node is labeled as 1. Connect node 1 to node 2.
Third node is labeled as 2. Connect node 2 to node 2 (itself), thus forming a self-cycle.
Visually, the graph looks like the following:

   1
/ \
/   \
0 --- 2
/ \
\_/


/**
* Definition for undirected graph.
* struct UndirectedGraphNode {
*     int label;
*     vector<UndirectedGraphNode *> neighbors;
*     UndirectedGraphNode(int x) : label(x) {};
* };
*/
class Solution {
public:
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
if(node == NULL)return NULL;
UndirectedGraphNode *root = NULL;
cloneGraphRecur(root, node);
return root;
}
void cloneGraphRecur(UndirectedGraphNode *&root, UndirectedGraphNode *&node) {
root = new UndirectedGraphNode(node->label);
existNodes[node->label] = root;
for(auto neighbor:node->neighbors) {
if(existNodes.find(neighbor->label) == existNodes.end()){
UndirectedGraphNode *temp = NULL;
cloneGraphRecur(temp, neighbor);
root->neighbors.push_back(temp);
}
else root->neighbors.push_back(existNodes[neighbor->label]);
}
}
private:
unordered_map<int,UndirectedGraphNode*> existNodes;
};
• 本文已收录于以下专栏：

## LeetCode——133.Clone Graph && 621.Task Scheduler

• parishong
• 2017年06月25日 15:52
• 105

## LeetCode 323. Number of Connected Components in an Undirected Graph（连通分量）

• jmspan
• 2016年04月25日 02:50
• 792

## [LeetCode][Java] Clone Graph

• Evan123mg
• 2015年08月01日 17:20
• 764

## [leetcode-133]Clone Graph（java）

• zdavb
• 2015年08月14日 21:30
• 1033

## [leetcode] 133. Clone Graph 解题报告

• qq508618087
• 2016年03月05日 04:47
• 1584

## LeetCode:DFS,BFS

10.Depth-first Search1.Minimum Depth of Binary TreeGiven a binary tree, find its minimum depth.The m...
• he_world
• 2017年01月06日 15:57
• 272

## LeetCode基础-图-连通分量

• cuit
• 2017年11月07日 00:12
• 107

## LeetCode[Graph]: Clone Graph

Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. 这...
• chfe007
• 2015年02月01日 22:34
• 515

## [LeetCode] 克隆图 Clone a Graph

• jiyanfeng1
• 2013年02月25日 10:47
• 1031

## LeetCode:Graph,

19.Graph先来一点Graph的知识吧，参考资料：
• he_world
• 2017年01月16日 14:53
• 86

举报原因： 您举报文章：[leetcode] 133.Clone Graph 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)