zoukankan      html  css  js  c++  java
  • 133. Clone Graph

    /**
     * Definition for undirected graph.
     * struct UndirectedGraphNode {
     *     int label;
     *     vector<UndirectedGraphNode *> neighbors;
     *     UndirectedGraphNode(int x) : label(x) {};
     * };
     */
    class Solution {
    public:
        unordered_map<UndirectedGraphNode *,UndirectedGraphNode *> m;
        unordered_set<UndirectedGraphNode *> visited;
        UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
            if (node == NULL)   return NULL;
            dfs_create(node);
            dfs_link(node);
            return m[node];
        }
        void dfs_create(UndirectedGraphNode *node) {
            if (node == NULL || m.count(node))   return;
            UndirectedGraphNode *p = new UndirectedGraphNode(node->label);
            m[node] = p;
            for (auto n : node->neighbors)
                dfs_create(n);
        }
        void dfs_link(UndirectedGraphNode *node) {
            if (node == NULL || visited.count(node))   return;
            visited.insert(node);
            for (auto n : node->neighbors) {
                m[node]->neighbors.push_back(m[n]);
                dfs_link(n);
            }
        }
    };
  • 相关阅读:
    数据库设计范式
    SQL 触发器
    SQL查询上月和本月两个月的语句
    angularjs学习总结 详细教程
    指令
    重复 HTML 元素
    AngularJS 数据绑定
    AngularJS 指令.
    AngularJS 数组
    AngularJS 对象
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/9063544.html
Copyright © 2011-2022 走看看