Clone Graph DFS&BFS 图的复制
来源:互联网 发布:大数据精准营销特点 编辑:程序博客网 时间:2024/05/29 17:53
思路:
方法一:DFS,要保存一个集合来判断哪些节点已经复制过了,这里使用了unordered_map
来看集合中是否已经有了某个节点(key)。
/** * Definition for undirected graph. * struct UndirectedGraphNode { * int label; * vector<UndirectedGraphNode *> neighbors; * UndirectedGraphNode(int x) : label(x) {}; * }; */class Solution {private: UndirectedGraphNode *clone(UndirectedGraphNode *node, unordered_map<const UndirectedGraphNode *, UndirectedGraphNode *> ©) { if(copy.find(node) != copy.end()) { return copy[node]; } UndirectedGraphNode *new_node = new UndirectedGraphNode(node->label); copy[node] = new_node; for(auto nnr : node->neighbors) { new_node->neighbors.push_back(clone(nnr, copy)); } return new_node; }public: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { if(node == nullptr) return nullptr; unordered_map<const UndirectedGraphNode *, UndirectedGraphNode *> copy; clone(node, copy); return copy[node]; }};
方法二:BFS,注意自环的情况。
/** * 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; queue<UndirectedGraphNode*> q; q.push(node); //judge hashmap unordered_map<const UndirectedGraphNode *, UndirectedGraphNode *> copy; UndirectedGraphNode *new_node = new UndirectedGraphNode(node->label); copy[node] = new_node; while(!q.empty()) { const UndirectedGraphNode *cur = q.front(); q.pop(); for(auto nnr : cur->neighbors) { if(copy.find(nnr) != copy.end()) { copy[cur]->neighbors.push_back(copy[nnr]);//self-circle }else { UndirectedGraphNode *new_node = new UndirectedGraphNode(nnr->label); copy[nnr] = new_node; copy[cur]->neighbors.push_back(new_node); q.push(nnr); } } } return copy[node]; }};
0 0
- Clone Graph DFS&BFS 图的复制
- Clone Graph BFS & DFS
- 133. Clone Graph 图的复制,运用了BFS
- [LeetCode] Clone Graph(!!!!graph&dfs&bfs)
- [C++]LeetCode: 129 Clone Graph (图的深拷贝 BFS && DFS)
- Clone Graph [leetcode] dfs和bfs
- LeetCode 133 Clone Graph (BFS || DFS)
- BFS和DFS解决LeetCode133. Clone Graph
- Clone Graph 图的复制 @LeetCode
- leetcode -- Clone Graph -- deep copy问题,dfs,bfs
- Leetcode 133. Clone Graph用BFS、DFS两种解法
- 133. Clone Graph :一个典型的DFS
- Clone Graph,bfs,map
- Clone Graph BFS
- [LeetCode]Copy List with Random Pointer &Clone Graph 复杂链表的复制&图的复制
- [leetcode] 133 clone graph bfs
- DFS&&BFS Search Graph
- Undirected Graph BFS/DFS
- mysql 从的一些参数设置
- 10款超炫的开源jquery的源码预览效果
- error LNK2019: 无法解析的外部符号 "void __cdecl cv::calcHist
- SPI协议简介
- foundation-NSDictonary&NSMutableDictionary
- Clone Graph DFS&BFS 图的复制
- 出走一厦门篇
- 智能听音公司Soundhawk获得550万美元融资,通过降噪算法让用户听到真正想听的声音
- 35.app后端搜索入门
- javax.swing.Timer 使用
- 黑马程序员——Java基础---线程的另一个总结(7)--condition,await
- 出走二杭州篇
- Service的生命周期(一)
- 【Leetcode】Compare version numbers