leetcode-Clone Graph
2013-12-02 20:27
288 查看
Clone an undirected graph. Each node in the graph contains a
a list of its
OJ's undirected graph serialization:
Nodes are labeled uniquely.
We use
a separator for node label and each neighbor of the node.
As an example, consider the serialized graph
The graph has a total of three nodes, and therefore contains three parts as separated by
First node is labeled as
Connect node
Second node is labeled as
Connect node
Third node is labeled as
Connect node
thus forming a self-cycle.
Visually, the graph looks like the following:
拷贝一个无向图。可以用递归来拷贝,在拷贝一个节点后,对它的邻节点递归地调用拷贝操作,要注意判断邻节点
是否已经被拷贝过。
labeland
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
0to both nodes
1and
2.
Second node is labeled as
1.
Connect node
1to node
2.
Third node is labeled as
2.
Connect node
2to node
2(itself),
thus forming a self-cycle.
Visually, the graph looks like the following:
1 / \ / \ 0 --- 2 / \ \_/
拷贝一个无向图。可以用递归来拷贝,在拷贝一个节点后,对它的邻节点递归地调用拷贝操作,要注意判断邻节点
是否已经被拷贝过。
class Solution { public: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { mLabelNodes.clear(); return clone(node); } private: map<int, UndirectedGraphNode*> mLabelNodes; // The node* set have been cloned UndirectedGraphNode *clone(UndirectedGraphNode *node) { UndirectedGraphNode *ret = NULL; if (node == NULL) return ret; ret = new UndirectedGraphNode(node->label); mLabelNodes.insert(make_pair(ret->label, ret)); map<int, UndirectedGraphNode*>::iterator it; for (int i=0; i<node->neighbors.size(); ++i) { it = mLabelNodes.find(node->neighbors[i]->label); if (it != mLabelNodes.end()) ret->neighbors.push_back((*it).second); else ret->neighbors.push_back(clone(node->neighbors[i])); } return ret; } };
相关文章推荐
- LeetCode 133 Clone Graph
- 【LeetCode】Clone Graph
- Clone Graph(LeetCode)
- [LeetCode] clone graph
- LeetCode[Graph]: Clone Graph
- leetcode:Clone Graph
- leetcode练习 Clone Graph
- LeetCode-Clone Graph
- 【LeetCode】Clone Graph
- LeetCode-Clone Graph
- [LeetCode]Clone Graph
- leetcode: Clone Graph
- [LeetCode]题解(python):133-Clone Graph
- [week 18][Leetcode] Clone Graph
- Clone Graph --- LeetCode
- leetcode 133 —— Clone Graph
- leetCode_Clone Graph
- Leetcode #133 Clone Graph
- LeetCode - Clone Graph
- Leetcode-133. Clone Graph