LeetCode OJ Clone Graph
来源:互联网 发布:java 多租户 编辑:程序博客网 时间:2024/06/15 08:08
Clone an undirected graph. Each node in the graph contains a label
and 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 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 / \ \_/
看了discuss,感觉像是用bfs将图遍历一遍。
class Solution { public: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { if (node == NULL) return node; queue<UndirectedGraphNode * > q; map<int, UndirectedGraphNode * > m; // store the node made to check if a node exists q.push(node); // store the node existed to bfs(my thought) while (!q.empty()) { UndirectedGraphNode * temp = q.front(); q.pop(); if (m.find(temp->label) == m.end()) { // it is new node m[temp->label] = new UndirectedGraphNode(temp->label); } map<int, UndirectedGraphNode * >::iterator tempMade = m.find(temp->label); // find the corresponding node made for (int i = 0; i < temp->neighbors.size(); i++) { map<int, UndirectedGraphNode * >::iterator son = m.find(temp->neighbors[i]->label); UndirectedGraphNode * newSon = son->second; // ready for pushing back, if son is end(), newSon would be changed later if (son == m.end()) { // new node newSon = new UndirectedGraphNode(temp->neighbors[i]->label); // make a new one m[temp->neighbors[i]->label] = newSon; // the new node now is an old one q.push(temp->neighbors[i]); } tempMade->second->neighbors.push_back(newSon); } } return m.find(node->label)->second; }};
0 0
- LeetCode OJ:Clone Graph
- LeetCode OJ - Clone Graph
- LeetCode OJ Clone Graph
- 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 Clone Graph
- [Leetcode] Clone Graph (Java)
- 栋栋晓08:Bootstrap学习总结:栅格系统
- 我对linux理解之v4l2
- Apache下配置虚拟主机总结
- 简述一下二级指针以及指针的引用在结构体中用法
- 黑马程序员 OC中的单例设计模式
- LeetCode OJ Clone Graph
- 虚拟主机
- LeetCode OJ Populating Next Right Pointers in Each Node II
- LeetCode OJ Populating Next Right Pointers in Each Node
- 黑马程序员--Java基础--IO流(二)
- [LeetCode]Reverse Linked List II
- c语言基础--数据类型
- ACM--steps--dyx--1.2.7--Lowest Bit
- Ubuntu终端教程04:处理文件内容