[leetcode] 133 Clone Graph
2015-01-17 18:57
417 查看
问题描述:
Clone an undirected graph. Each node in the graph contains alabeland 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 / \ \_/
代码:
UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { //c++ if(node == NULL) return NULL; set<int> visited; map<int,UndirectedGraphNode*> myMap; queue<UndirectedGraphNode*> myQueue; UndirectedGraphNode *head,*p,*temp,*one; myQueue.push(node); bool isFirst = true; do { p = myQueue.front(); if(isFirst){ temp = new UndirectedGraphNode(p->label); head= temp; myMap.insert(make_pair(p->label,temp)); isFirst = false; } else temp = myMap[p->label]; vector<UndirectedGraphNode*> vec; for(int i=0; i<(p->neighbors).size(); i++){ int label =(p->neighbors)[i]->label; if(myMap.count(label)!=0) one = myMap[label]; else { one = new UndirectedGraphNode(label); myMap.insert(make_pair(label,one)); } vec.push_back(one); if(visited.count(label)==0) myQueue.push(p->neighbors[i]); } temp->neighbors = vec; myQueue.pop(); visited.insert(p->label); }while(!myQueue.empty()); return head; }
相关文章推荐
- LeetCode 133 Clone Graph
- leetcode 133 clone-graph 克隆图(图的遍历算法)
- [leetcode] 133 clone graph bfs
- LeetCode(133) Clone Graph
- LeetCode(133) Clone Graph
- LeetCode(133)Clone a Graph
- [leetcode-133]Clone Graph(java)
- leetcode 133: Clone Graph
- leetcode做题总结,题目Clone Graph 133
- LeetCode 133: Clone Graph
- LeetCode 133 Clone Graph (BFS || DFS)
- leetcode[133]Clone Graph
- [leetcode 133]Clone Graph
- [LeetCode#133]Clone Graph
- Java for LeetCode 133 Clone Graph
- Leetcode 133 Clone Graph
- LeetCode133 Clone Graph
- leetcode || 133、Clone Graph
- leetcode_c++:图:Clone Graph(133)
- Clone Graph Leetcode 133