Leetcode: Clone Graph
来源:互联网 发布:淘宝卖微信号违法吗 编辑:程序博客网 时间:2024/05/19 00:16
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 / \ \_/
题目要求克隆图,采用深度优先或者广度优先进行遍历。使用一个Map存储原始节点和克隆以后的节点。
参考代码(使用深度优先遍历):
/** * 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 == nullptr) return nullptr; // map的key为原始节点,value为拷贝的节点 unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> copyMap; // 完成给定节点的图的拷贝工作 clone(node, copyMap); return copyMap[node]; }private: static UndirectedGraphNode* clone(UndirectedGraphNode* node, unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> ©Map) { // 如果该节点已经拷贝过,直接返回该节点的拷贝 if (copyMap.find(node) != copyMap.end()) return copyMap[node]; // 否则,拷贝该节点及其相邻节点 UndirectedGraphNode* copiedNode = new UndirectedGraphNode(node->label); copyMap[node] = copiedNode; for (auto neighborNode : node->neighbors) copiedNode->neighbors.push_back(clone(neighborNode, copyMap)); return copiedNode; }};
- 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 Clone Graph
- leetcode-Clone Graph
- LeetCode | Clone Graph
- Leetcode: Clone Graph
- [LeetCode] Clone Graph
- LeetCode OJ:Clone Graph
- Leetcode Clone Graph
- [Leetcode] Clone Graph (Java)
- Clone Graph - LeetCode
- 【leetcode】Clone Graph
- A Rose by Any Other Name Will End Up As a Cabbage
- LTE学习:天线端口数目和物理天线数目关系
- iOS 下拉刷新和上拉加载更多
- python2.7学习笔记(9) ——面向对象编程
- Android中使用SurfaceView视频播放器
- Leetcode: Clone Graph
- 程序员如何在"小公司成长"和"大公司学习"
- [转]struct和typedef struct彻底明白了
- Nginx配置文件详细说明
- pandas
- LeetCode----Roman To Integer
- 更加简洁易用——wangEditor富文本编辑器新版本发布
- 【C++】GET、POST网络请求boost.asio实现
- UI触屏的操作初识