zoukankan      html  css  js  c++  java
  • clone-graph leetcode C++

    Clone an undirected graph. Each node in the graph contains alabeland a list of itsneighbors.

    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#.

    First node is labeled as0. Connect node0to both nodes1and2. Second node is labeled as1. Connect node1to node2. Third node is labeled as2. Connect node2to node2(itself), thus forming a self-cycle.

    Visually, the graph looks like the following:

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

    C++

    /**
     * Definition for undirected graph.
     * struct UndirectedGraphNode {
     *     int label;
     *     vector<UndirectedGraphNode *> neighbors;
     *     UndirectedGraphNode(int x) : label(x) {};
     * };
     */
    class Solution {
    public:
        UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node){
            unordered_map<int, UndirectedGraphNode*> umap;
            return clone(node, umap);
        } 
        UndirectedGraphNode *clone(UndirectedGraphNode *node, unordered_map<int, UndirectedGraphNode*> &umap) {
            if (!node) return node;
            if (umap.count(node->label)) return umap[node->label];
            UndirectedGraphNode *newNode = new UndirectedGraphNode(node->label);
            umap[node->label] = newNode;
            for (int i = 0; i < node->neighbors.size(); ++i){
                (newNode->neighbors).push_back(clone(node->neighbors[i],umap));
            }
            return newNode;
        }
    };
  • 相关阅读:
    1 let和const
    ECMAScript 6 扫盲
    回溯法
    13. Ajax技术
    12.JSTL标签
    11.EL(表达式语言)
    10.正则表达式(未完成)
    博客园自定义样式
    9.一次简单的Web作业
    8.JavaScript
  • 原文地址:https://www.cnblogs.com/vercont/p/10210287.html
Copyright © 2011-2022 走看看