Clone Graph leetcode
来源:互联网 发布:网络seo 编辑:程序博客网 时间:2024/06/05 16:34
Clone an undirected graph. Each node in the graph contains a label
and a list of its neighbors
.
这里使用深度优先搜索。这样可以递归实现,如果是宽度优先,就要额外使用queue容器。
关键点:
1 这里的clone需要深度拷贝,就是要使用new操作了
2 防止回路无限循环,就要使用hash表,这里使用unordered_map记录访问过的节点。因为这里的label应该是唯一的才对,所以可以直接使用label作为关键字就可以。
/** * Definition for undirected graph. * struct UndirectedGraphNode { * int label; * vector<UndirectedGraphNode *> neighbors; * UndirectedGraphNode(int x) : label(x) {}; * }; */class Solution {public: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { unordered_map<int,UndirectedGraphNode*> visit; return dsf(node,visit); } UndirectedGraphNode* dsf(UndirectedGraphNode* node,unordered_map<int,UndirectedGraphNode*>& visit) { if(node == nullptr) return nullptr; if(visit.find(node->label)!= visit.end()) return visit[node->label]; UndirectedGraphNode* newNode = new UndirectedGraphNode(node->label); newNode->neighbors.resize(node->neighbors.size()); visit.insert(make_pair(node->label,newNode)); for(int i=0;i<node->neighbors.size();i++) { newNode->neighbors[i] = dsf(node->neighbors[i],visit); } return newNode; }};
0 0
- 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
- 关于NIO2的relativize的关键词使用
- html的swf文件代码解析
- 浅拷贝、深拷贝
- Handler+Looper+MessageQueue深入详解
- VC++修改对话框颜色方法
- Clone Graph leetcode
- Cron表达式
- ListView的适配器模式
- 一个比较完整的Inno Setup 安装脚本
- 无论任何坎坷 有情人终会在一起
- IPC of UNIX Domain Socket基础程序实现
- Intent 和 Intent Filter
- 从div盒子模型谈如何写可维护的css代码
- linux一天一个命令--解压tgz文件