LeetCode: Clone Graph

来源:互联网 发布:idc唯一网络排名 编辑:程序博客网 时间:2024/06/05 03:49

思路: 刚开始用一个DFS方法,不过这题目最好用BFS方法,这篇博客介绍的思路不错,而且代码精简,套用这个模式的code如下:

class Solution {    unordered_map<int, UndirectedGraphNode*> m;  // m 存储新图中的节点label 和 指针位置public:    UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {        if(node == NULL)            return node;        queue<UndirectedGraphNode *> Q;        Q.push(node);        while(!Q.empty()){            UndirectedGraphNode * qFront = Q.front();            Q.pop();            if(m.find(qFront->label) == m.end())                m[qFront->label] = new UndirectedGraphNode(qFront->label);             for(int i = 0;i < (qFront->neighbors).size();i++){                if(m.find((qFront->neighbors)[i]->label) == m.end()){// 作为是否已经添加过的标记                    m[(qFront->neighbors)[i]->label] = new UndirectedGraphNode((qFront->neighbors)[i]->label);                    Q.push((qFront->neighbors)[i]);                }                m[qFront->label]->neighbors.push_back(m[qFront->neighbors[i]->label]);            }        }        return m[node->label];    }};



0 0
原创粉丝点击