• [LeetCode]133. Clone Graph


    复制图

    分别使用bfs和dfs

    1:bfs

    /**
     * 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) return NULL;
            unordered_map<UndirectedGraphNode*,UndirectedGraphNode*> mp;
            queue<UndirectedGraphNode*> toVisit;
            
            UndirectedGraphNode* copy = new UndirectedGraphNode(node->label);
            mp[node]=copy;
            toVisit.push(node);
            while(!toVisit.empty()){
                UndirectedGraphNode* cur = toVisit.front();
                toVisit.pop();
                for(UndirectedGraphNode* neigh:cur->neighbors){
                    if(mp.find(neigh)==mp.end()){
                        UndirectedGraphNode* neigh_copy = new UndirectedGraphNode(neigh->label);
                        mp[neigh]=neigh_copy;
                        toVisit.push(neigh);
                    }
                    mp[cur]->neighbors.push_back(mp[neigh]);
                }
            }
            return copy;
        }
    
        
    };

    2、dfs

    class Solution {
    public:
        UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
            if (!node) return NULL;
            if (mp.find(node) == mp.end()) {
                mp[node] = new UndirectedGraphNode(node -> label);
                for (UndirectedGraphNode* neigh : node -> neighbors)
                    mp[node] -> neighbors.push_back(cloneGraph(neigh));
            }
            return mp[node];
        } 
    private:
        unordered_map<UndirectedGraphNode*, UndirectedGraphNode*> mp;
    };
  • 相关阅读:
    20200503:对象头具体包括什么
    20200504:对象怎么定位
    [WC2006]水管局长
    [HNOI2010]弹飞绵羊
    [国家集训队]Tree II
    [SDOI2008]洞穴勘测
    [SDOI2011]染色
    [BZOJ2959]长跑
    LCT感性瞎扯
    [BZOJ4998]星球联盟
  • 原文地址:https://www.cnblogs.com/bright-mark/p/9602959.html
Copyright © 2020-2023  润新知