zoukankan      html  css  js  c++  java
  • [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;
    };
  • 相关阅读:
    Debian 系统的ftp服务器安装配置
    一个程序员送给大学生弟弟的那些话
    javaWeb——Servlet(一)
    javaWeb——JSP(一)
    C语言中 lseek函数的使用规范
    ConcurrentHashMap原理
    线程池的原理
    zookeeper 是什么?zookeeper 都有哪些功能?
    RabbitMQ(转)
    数据库分库分表
  • 原文地址:https://www.cnblogs.com/bright-mark/p/9602959.html
Copyright © 2011-2022 走看看