leetcode: Clone Graph
来源:互联网 发布:万网域名购买流程 编辑:程序博客网 时间:2024/05/16 05:07
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 / \ \_/
/** * Definition for undirected graph. * struct UndirectedGraphNode { * int label; * vector<UndirectedGraphNode *> neighbors; * UndirectedGraphNode(int x) : label(x) {}; * }; */class Solution {public: UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) { UndirectedGraphNode *retNode = NULL; map<UndirectedGraphNode*, UndirectedGraphNode*> nodeMap; list<UndirectedGraphNode *> nodeList; if (node == NULL) return NULL; nodeList.push_back(node); retNode = new UndirectedGraphNode(node->label); nodeMap[node] = retNode; while (nodeList.size() > 0) { UndirectedGraphNode *curNode = nodeList.front(); UndirectedGraphNode *clonedNode = nodeMap[curNode]; nodeList.pop_front(); for (int i=0; i<curNode->neighbors.size(); i++) { UndirectedGraphNode *oldNeighborNode = curNode->neighbors[i]; if (nodeMap.find(oldNeighborNode) == nodeMap.end()) { UndirectedGraphNode *newNeighborNode = new UndirectedGraphNode(oldNeighborNode->label); nodeList.push_back(oldNeighborNode); nodeMap[oldNeighborNode] = newNeighborNode; } clonedNode->neighbors.push_back(nodeMap[oldNeighborNode]); } } return retNode; }};
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
- 2014/11/29实验室会议
- 软件工程—>国内核心期刊
- sql server2008的游标
- [Android] 任意时刻从子线程切换到主线程的实现
- hibernate与jdbc的区别
- leetcode: Clone Graph
- 人物动画设置
- 生产电路的新时代:工程师把电路打印到纸上
- 第14周项目2-(3)
- 贪心算法之装箱问题
- Python多线程
- Eclipse中10个最有用的快捷键组合
- 小马哥-----高仿米3系列刷机拆机主板与开机界面展示, 版本很多。注意区分
- c progrmming language gets函数