Clone Graph问题及解法
来源:互联网 发布:js中使用map集合 编辑:程序博客网 时间:2024/05/18 18:14
问题描述:
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 node0
to both nodes1
and2
. - Second node is labeled as
1
. Connect node1
to node2
. - Third node is labeled as
2
. Connect node2
to node2
(itself), thus forming a self-cycle.
Visually, the graph looks like the following:
1 / \ / \ 0 --- 2 / \ \_/
典型的DFS问题。不多说明,直接上代码。
过程详见代码:
/** * 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 == NULL) return NULL;UndirectedGraphNode * newnode = new UndirectedGraphNode(node->label);unordered_map<int, UndirectedGraphNode *> labelmap;labelmap[node->label] = newnode;bl(node, newnode, labelmap);return newnode;}void bl(UndirectedGraphNode * node, UndirectedGraphNode * newnode, unordered_map<int, UndirectedGraphNode *>& labelmap){if (node == NULL) return;for (int i = 0; i < node->neighbors.size(); i++){int label = node->neighbors[i]->label;if (labelmap.count(label))newnode->neighbors.emplace_back(labelmap[label]);else{UndirectedGraphNode * n = new UndirectedGraphNode(label);newnode->neighbors.emplace_back(n);labelmap[label] = n;bl(node->neighbors[i], n, labelmap);}}}};
阅读全文
0 0
- Clone Graph问题及解法
- Leetcode 133. Clone Graph用BFS、DFS两种解法
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- 关联规则挖掘:基本概念
- win7版Active Ports下载
- Struts2拦截器
- 转发与重定向详解
- 求最大子序列和 及其 子序列的左端点和右端点 A
- Clone Graph问题及解法
- Andriid自定义输入控件EditText
- 第九章 情归情理归理 好话丑话最好都说在前面
- 赋值运算符
- ztree数据表结构设计
- struts基础配置
- 一种不需要内存申请指针反序,一种内存申请指针反序
- 异常处理----声明抛出异常-人工抛出异常
- 线段树单点更新+求和