zoukankan      html  css  js  c++  java
  • [LeetCode] Clone Graph

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors.

    OJ's undirected graph serialization:

    Nodes are labeled uniquely.

    We use # as a separator for each node, and , as a separator for node label and each neighbor of the node.

    As an example, consider the serialized graph {0,1,2#1,2#2,2}.

    The graph has a total of three nodes, and therefore contains three parts as separated by #.

    1. First node is labeled as 0. Connect node 0 to both nodes 1 and 2.
    2. Second node is labeled as 1. Connect node 1 to node 2.
    3. Third node is labeled as 2. Connect node 2 to node 2 (itself), thus forming a self-cycle.

    Visually, the graph looks like the following:

           1
          / 
         /   
        0 --- 2
             / 
             \_/

    DFS!

     1 /**
     2  * Definition for undirected graph.
     3  * struct UndirectedGraphNode {
     4  *     int label;
     5  *     vector<UndirectedGraphNode *> neighbors;
     6  *     UndirectedGraphNode(int x) : label(x) {};
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     void cloneNode(UndirectedGraphNode *&res, UndirectedGraphNode *node, map<int, UndirectedGraphNode*> &mp) {
    12         if (mp[node->label] != NULL) {
    13             res = mp[node->label];
    14             return;
    15         }
    16         res = new UndirectedGraphNode(node->label);
    17         res->neighbors.resize(node->neighbors.size());
    18         mp[node->label] = res;
    19 
    20         for (int i = 0; i < node->neighbors.size(); ++i) {
    21             cloneNode(res->neighbors[i], node->neighbors[i], mp);
    22         }
    23     }
    24     
    25     UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
    26         if (node == NULL) return NULL;
    27         map<int, UndirectedGraphNode*> mp;
    28         UndirectedGraphNode* res; 
    29         cloneNode(res, node, mp);
    30         return res;
    31     }
    32 };
     
  • 相关阅读:
    [MacOS]Sublime text3 安装(一)
    [RHEL8]开启BBR
    PAT Advanced 1136 A Delayed Palindrome (20分)
    PAT Advanced 1144 The Missing Number (20分)
    PAT Advanced 1041 Be Unique (20分)
    PAT Advanced 1025 PAT Ranking (25分)
    PAT Advanced 1022 Digital Library (30分)
    PAT Advanced 1019 General Palindromic Number (20分)
    PAT Advanced 1011 World Cup Betting (20分)
    PAT Advanced 1102 Invert a Binary Tree (25分)
  • 原文地址:https://www.cnblogs.com/easonliu/p/4242088.html
Copyright © 2011-2022 走看看