133. Clone Graph
来源:互联网 发布:windows最新软件版本 编辑:程序博客网 时间:2024/06/05 00:46
#
@(leetcode)[BFS, 图论]
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(NULL == node) { return node; } queue<UndirectedGraphNode*> que; unordered_map<int, UndirectedGraphNode*> hash_map; que.push(node); //第一次BFS,将所有节点存入到map中 while(!que.empty()) { UndirectedGraphNode* tmp = que.front(); que.pop(); if(hash_map.count(tmp->label) == 0) { UndirectedGraphNode* new_node = new UndirectedGraphNode(tmp->label); hash_map[new_node->label] = new_node; for(int i = 0; i < tmp->neighbors.size(); ++i) { que.push(tmp->neighbors[i]); } } } //第二次BFS,复制原图的所有临接节点 que.push(node); while(!que.empty()) { UndirectedGraphNode* tmp = que.front(); que.pop(); UndirectedGraphNode* exisit_node = hash_map[tmp->label]; if(exisit_node->neighbors.empty() && !tmp->neighbors.empty()) { for(int i = 0; i < tmp->neighbors.size(); ++i) { exisit_node->neighbors.push_back(hash_map[tmp->neighbors[i]->label]); que.push(tmp->neighbors[i]); } } } return hash_map[node->label]; }};
- LeetCode 133. Clone Graph
- [Leetcode] 133. Clone Graph
- [leetcode] 133.Clone Graph
- 133. Clone Graph
- Leetcode 133. Clone Graph
- 133. Clone Graph LeetCode
- 133. Clone Graph
- LeetCode 133. Clone Graph
- leetcode 133. Clone Graph
- 133. Clone Graph
- 133. Clone Graph
- LeetCode *** 133. Clone Graph
- leetcode-133. Clone Graph
- LeetCode 133. Clone Graph
- 133. Clone Graph
- 133. Clone Graph
- 133. Clone Graph
- 133. Clone Graph
- Spring Boot整合MyBatis
- JVM深入与项目中应用--(一)JVM理解
- Glide加载图片类型
- Object类
- 【学习笔记】View相关知识点
- 133. Clone Graph
- DPDK网卡绑定和解绑
- 快排
- 数组--sum问题
- TIME_WAIT状态与解决方法
- Day16、文件拷贝、数据结构(逻辑结构、物理结构)顺序物理结构、链式物理结构
- libxml/tree.h file not found解决办法
- 事件类型
- 推荐算法介绍