leetcode -- Clone Graph
2014-10-06 21:17
387 查看
不要晃荡,找准方向
[问题描述]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 *Solution::cloneGraph(UndirectedGraphNode *node){ if (node == NULL) return NULL; map<UndirectedGraphNode*, UndirectedGraphNode*> visited; queue<UndirectedGraphNode*> bfs_q; visited[node] = new UndirectedGraphNode(node->label); bfs_q.push(node); while(!bfs_q.empty()){ UndirectedGraphNode* tmp = bfs_q.front(); bfs_q.pop(); for (auto k : tmp->neighbors){ if (visited.find(k) == visited.end()){ UndirectedGraphNode* t = new UndirectedGraphNode(k->label); visited[k] = t; visited[tmp]->neighbors.push_back(t); bfs_q.push(k); } else{ visited[tmp]->neighbors.push_back(visited[k]); } } } return visited[node]; }
相关文章推荐
- [leetcode] Clone Graph
- [LeetCode] Clone Graph
- leetcode之Clone Graph
- [LeetCode]Clone Graph 克隆图
- leetcode_题解_Clone Graph
- leetcode--Clone Graph
- *Leetcode 133. Clone Graph DFS
- Java for LeetCode 133 Clone Graph
- [LeetCode]Clone Graph
- LeetCode_Clone Graph
- Leetcode: Clone Graph
- leetcode_c++:图:Clone Graph(133)
- [LeetCode] Clone Graph
- LeetCode - Clone Graph
- leetcode 133 clone-graph 克隆图(图的遍历算法)
- 【LeetCode】Clone_Graph
- leetcode Clone Graph
- [LeetCode] 131: Clone Graph
- leetcode — clone-graph
- leetCode解题报告之Clone Graph