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
  • 相关阅读:
    Spring Batch 之 Sample(XML文件操作)(五)
    Spring Batch 之 Spring Batch 简介(一)
    Spring Batch 之 Sample(固定长格式文件读写)(六)
    Spring Batch 之 Sample(复合格式文件的读、多文件的写)(七)
    bat调用jar包的两个典型问题
    Spring Batch 之 Sample(Hello World)(三)
    开园大吉
    js中createElement方法的兼容性
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
    Spring Batch 之 框架流程简单介绍(二)
  • 原文地址:https://www.cnblogs.com/whesuanfa/p/7007843.html
Copyright © 2011-2022 走看看