首页 > 其他 > 详细

leetcode-----133. 克隆图

时间:2020-07-30 23:35:24      阅读:147      评论:0      收藏:0      [点我收藏+]

代码

/*
 * @lc app=leetcode.cn id=133 lang=cpp
 *
 * [133] 克隆图
 * 1、复制所有点
 * 2、复制所有边
 */

// @lc code=start
/*
// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> neighbors;
    
    Node() {
        val = 0;
        neighbors = vector<Node*>();
    }
    
    Node(int _val) {
        val = _val;
        neighbors = vector<Node*>();
    }
    
    Node(int _val, vector<Node*> _neighbors) {
        val = _val;
        neighbors = _neighbors;
    }
};
*/

class Solution {
public:
    unordered_map<Node*, Node*> map;

    Node* cloneGraph(Node* node) {
        if (!node) return NULL;
        dfs(node);   

        for (auto [s, d]: map) {
            for (auto ver: s->neighbors) {
                d->neighbors.push_back(map[ver]);
            }
        }
        return map[node];
    }

    void dfs(Node* node) {
        map[node] = new Node(node->val);
        for (auto ver: node->neighbors) {
            if (map.count(ver) == 0) dfs(ver);
        }
    } 
};
// @lc code=end


leetcode-----133. 克隆图

原文:https://www.cnblogs.com/clown9804/p/13406749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!