zoukankan      html  css  js  c++  java
  • 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
             / 
             \_/
    思路:
    思路类似上题,用一个map来保存新旧graph节点的对应关系
    代码:
     1     UndirectedGraphNode *clone(UndirectedGraphNode *node, map<int,UndirectedGraphNode*> &table)
     2     {
     3         if(node==NULL)
     4             return NULL;
     5             
     6         if(table.find(node->label)!=table.end())
     7             return table[node->label];
     8         
     9         UndirectedGraphNode *newnode=new UndirectedGraphNode(node->label);
    10         table[newnode->label]=newnode;
    11 
    12         for(int i=0;i<node->neighbors.size();i++)
    13         {
    14             UndirectedGraphNode *neighbor=clone(node->neighbors[i],table);
    15             newnode->neighbors.push_back(neighbor);
    16         }
    17         
    18         return newnode;
    19     }
    20 
    21     UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
    22         // Note: The Solution object is instantiated only once and is reused by each test case.
    23         //keep a hash table to check whether this node is visited or not
    24         map<int,UndirectedGraphNode*> visitTable;
    25         return clone(node,visitTable);
    26     }
  • 相关阅读:
    EntityFramework,配合Oracle.ManagedDataAccess配置Oracle数据库连接
    使用Speech实现js播放音频
    PushAsync is not supported globally on Android, please use a NavigationPage异常出现及解决方案
    Vs 2017初次配置Xamarin
    本地项目使用github管理
    服务注册和发现 Eureka
    FutureTask的理解
    Syncronized之偏向锁
    Syncronized之自适应自旋锁
    发布订阅-jedis
  • 原文地址:https://www.cnblogs.com/waruzhi/p/3407231.html
Copyright © 2011-2022 走看看