zoukankan      html  css  js  c++  java
  • 一 克隆图

    广搜

    133 Clone Graph

        public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
            if (node == null) return node;
            LinkedList<UndirectedGraphNode> queue = new LinkedList<>();
            HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<>();
            queue.offer(node);
            UndirectedGraphNode copy = new UndirectedGraphNode(node.label);
            map.put(node, copy);
            while (!queue.isEmpty()){
                UndirectedGraphNode cur = queue.poll();
                for (int i = 0; i < cur.neighbors.size(); i++){
                    if (!map.containsKey(cur.neighbors.get(i))){
                        copy = new UndirectedGraphNode(cur.neighbors.get(i).label);
                        map.put(cur.neighbors.get(i), copy);
                        queue.offer(cur.neighbors.get(i));
                    }
                    map.get(cur).neighbors.add(map.get(cur.neighbors.get(i)));
                }
            }
            return map.get(node);
        }
    View Code
        public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
            if (node == null) return node;
            LinkedList<UndirectedGraphNode> stack = new LinkedList<>();
            HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<>();
            stack.push(node);
            UndirectedGraphNode copy = new UndirectedGraphNode(node.label);
            map.put(node, copy);
            while (!stack.isEmpty()){
                UndirectedGraphNode cur = stack.poll();
                for (int i = 0; i < cur.neighbors.size(); i++){
                    if(!map.containsKey(cur.neighbors.get(i))){
                        copy = new UndirectedGraphNode(cur.neighbors.get(i).label);
                        map.put(cur.neighbors.get(i), copy);
                        stack.push(cur.neighbors.get(i));
                    }
                    map.get(cur).neighbors.add(map.get(cur.neighbors.get(i)));  
                }
                
            }
            return map.get(node);
        }
    View Code
        public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {  
            if(node == null)  
                return null;  
            HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<UndirectedGraphNode, UndirectedGraphNode>();  
            UndirectedGraphNode copy = new UndirectedGraphNode(node.label);  
            map.put(node,copy);  
            helper(node,map);  
            return copy;  
        }  
        private void helper(UndirectedGraphNode node, HashMap<UndirectedGraphNode, UndirectedGraphNode> map)  
        {  
            for(int i=0;i<node.neighbors.size();i++)  
            {   
                UndirectedGraphNode cur = node.neighbors.get(i);  
                if(!map.containsKey(cur))  
                {  
                    UndirectedGraphNode copy = new UndirectedGraphNode(cur.label);  
                    map.put(cur,copy);  
                    helper(cur,map);  
                }  
                map.get(node).neighbors.add(map.get(cur));  
            }  
        }  
    View Code
  • 相关阅读:
    c++ 在window下创建窗口的基本步骤
    visual studio 2015 安装MSDN全称Microsoft Developer Network 安装离线的MSDN
    interp1一维数据插值在matlab中的用法
    Win32控制台、Win32项目、MFC项目、CLR控制台、CLR空项目、空项目区别
    C# 中的延时的方法。
    C#入门——Console.Write()与Console.WriteLine()
    php发送短信验证码
    来自联想、百度的团队,带着颠覆的理想,做短信服务平台
    python发送短信验证码
    uperTextView-从未如此惊艳!一个超级的TextView
  • 原文地址:https://www.cnblogs.com/whesuanfa/p/7007843.html
Copyright © 2011-2022 走看看