Clone Graph 克隆图
2014-01-21 15:15
211 查看
/**
* 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;
map<UndirectedGraphNode*,UndirectedGraphNode*> hasCopied;
queue<UndirectedGraphNode*> q;
hasCopied[node]=new UndirectedGraphNode(node->label);
q.push(node);
while(!q.empty())
{
UndirectedGraphNode *curnode=q.front();
q.pop();
for(int i=0;i<curnode->neighbors.size();i++)
{
UndirectedGraphNode *neighbornode=curnode->neighbors[i];
if(hasCopied.find(neighbornode)!=hasCopied.end())
{
hasCopied[curnode]->neighbors.push_back(hasCopied[neighbornode]);
}
else
{
hasCopied[neighbornode]=new UndirectedGraphNode(neighbornode->label);
hasCopied[curnode]->neighbors.push_back(hasCopied[neighbornode]);
q.push(neighbornode);
}
}
}
//key是原始结点,value是复制的结点。每个结点在队列里面复制了本身,但是没有复制邻居。
return hasCopied[node];
}
};
* 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;
map<UndirectedGraphNode*,UndirectedGraphNode*> hasCopied;
queue<UndirectedGraphNode*> q;
hasCopied[node]=new UndirectedGraphNode(node->label);
q.push(node);
while(!q.empty())
{
UndirectedGraphNode *curnode=q.front();
q.pop();
for(int i=0;i<curnode->neighbors.size();i++)
{
UndirectedGraphNode *neighbornode=curnode->neighbors[i];
if(hasCopied.find(neighbornode)!=hasCopied.end())
{
hasCopied[curnode]->neighbors.push_back(hasCopied[neighbornode]);
}
else
{
hasCopied[neighbornode]=new UndirectedGraphNode(neighbornode->label);
hasCopied[curnode]->neighbors.push_back(hasCopied[neighbornode]);
q.push(neighbornode);
}
}
}
//key是原始结点,value是复制的结点。每个结点在队列里面复制了本身,但是没有复制邻居。
return hasCopied[node];
}
};
相关文章推荐
- [LeetCode] 克隆图 Clone a Graph
- [LeetCode]Clone Graph 克隆图
- LeetCode | Clone Graph(克隆图)
- LeetCode-Clone Graph-克隆无向图
- leetcode 133 clone-graph 克隆图(图的遍历算法)
- java中的Cloneable和Serializable接口,实现浅克隆和深度克隆
- Java clone() 浅克隆与深度克隆
- 【LEETCODE OJ】Clone Graph
- 【leetcode】Clone Graph
- LeetCode_Clone Graph
- Clone Graph leetcode java(DFS and BFS 基础)
- 克隆(Clone)与销毁(Destroy)对象
- Java Cloneable接口与Serializable接口实现对象克隆和深度克隆
- leetcode: Clone Graph
- Clone Graph (Java)
- Clone Graph
- Mac Iterm2 上配置类似于 SecureCRT 中的克隆对话 (clone session) 功能
- leetcode--Clone Graph
- Java克隆(Clone)的应用
- Clone:Xml序列化反序列克隆对象