• LeetCode 133 Clone Graph


    LeetCode 133 Clone Graph

    题目的意思是,给你一个图,你给他返回一个复制的图。
    所有的节点你都需要自己New 而不能用他给的参数赋值,因为那是个指针。

    每个节点的label都是唯一的,由于存在环,防止无限递归,可以用map将创建的节点存起来。

    c++

    class Solution {
    public:
        UndirectedGraphNode* ans;
        map<int,UndirectedGraphNode*> vis;
        UndirectedGraphNode *cloneGraph(UndirectedGraphNode *node) {
            if(node==NULL)
                return ans;
            ans = new UndirectedGraphNode(node->label);
            vis[ans->label] = ans;
            dfs(node,ans);
            return ans;
        }
        
        void dfs(UndirectedGraphNode *node,UndirectedGraphNode *ans)
        {
            int l=node->neighbors.size();
            for(int i=0;i<l;i++)
            {
                if(vis[node->neighbors[i]->label]==NULL)
                {    
                    vis[node->neighbors[i]->label] = new UndirectedGraphNode(node->neighbors[i]->label);
                    ans->neighbors.push_back( vis[node->neighbors[i]->label]);
                    
                    dfs(node->neighbors[i],ans->neighbors[i]);
                }
                else
                    ans->neighbors.push_back(vis[node->neighbors[i]->label]);
                
            }
        }
        
        
    };
    
  • 相关阅读:
    移动端开发-禁止横屏
    奇葩的对象创建方式(更新中)
    每日积累之8.8
    每日积累 8.6
    折半查找
    linux中的amount的解释
    Redis集群错误
    每日积累 8.6
    Redis中在程序中的应用
    每日积累 8.4
  • 原文地址:https://www.cnblogs.com/dacc123/p/9939482.html
Copyright © 2020-2023  润新知