LeetCode--clone-graph
2018-01-20 22:08
344 查看
题目描述
Clone an undirected graph. Each node in the graph contains alabeland a list of itsneighbors.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 as0. Connect node0to both nodes1and2.
Second node is labeled as1. Connect node1to node2.
Third node is labeled as2. Connect node2to node2(itself), thus forming a self-cycle.
Visually, the graph looks like the following:
1 / \ / \ 0 --- 2 / \ \_/
bfs:
class Solution { public: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { if (!node) return NULL; UndirectedGraphNode* copy = new UndirectedGraphNode(node -> label); mp[node] = copy; queue<UndirectedGraphNode*> toVisit; toVisit.push(node); while (!toVisit.empty()) { UndirectedGraphNode* cur = toVisit.front(); toVisit.pop(); for (UndirectedGraphNode* neigh : cur -> neighbors) { if (mp.find(neigh) == mp.end()) { UndirectedGraphNode* neigh_copy = new UndirectedGraphNode(neigh -> label); mp[neigh] = neigh_copy; toVisit.push(neigh); } mp[cur] -> neighbors.push_back(mp[neigh]); } } return copy; } private: unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> mp;
dfs:
class Solution { public: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { if (!node) return NULL; if (mp.find(node) == mp.end()) { mp[node] = new UndirectedGraphNode(node -> label); for (UndirectedGraphNode* neigh : node -> neighbors) mp[node] -> neighbors.push_back(cloneGraph(neigh)); } return mp[node]; } private: unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> mp; };
相关文章推荐
- leetcode Clone Graph
- [LeetCode]Clone Graph
- LeetCode -- Clone Graph
- leetcode 日经贴,Cpp code -Clone Graph
- [LeetCode] Clone Graph
- Clone Graph -- LeetCode
- Clone Graph leetcode
- [LeetCode]Clone Graph 克隆图
- [Leetcode][JAVA] Clone Graph, Copy List with Random Pointer
- 【Leetcode】 Clone Graph
- leetcode:clone graph
- LeetCode Graph:M133_Clone_Graph
- leetcode——133——Clone Graph
- [LeetCode] Clone Graph
- LeetCode - Clone Graph
- LeetCode | Clone Graph
- LeetCode133:Clone Graph
- LeetCode OJ Clone Graph
- leetcode_题解_Clone Graph
- leetcode: Clone Graph