zoukankan      html  css  js  c++  java
  • [leetcode]Q133Clone Graph

    克隆图记住:一个map一个queue,照葫芦画瓢BFS

    找到一个节点就画一个对应的新的,用map对应,然后添加邻居,记录邻居到queue

    public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
            if (node==null) return node;
            UndirectedGraphNode res = new UndirectedGraphNode(node.label);
            Queue<UndirectedGraphNode> queue = new LinkedList<>();
            Map<UndirectedGraphNode,UndirectedGraphNode> map  = new HashMap<>();
            queue.offer(node);
            map.put(node,res);
            while (!queue.isEmpty()){
                UndirectedGraphNode cur = queue.poll();
                List<UndirectedGraphNode> neighbors = cur.neighbors;
                for (UndirectedGraphNode neighbor :
                        neighbors) {
                    if (!map.containsKey(neighbor)){
                        UndirectedGraphNode newNode = new UndirectedGraphNode(neighbor.label);
                        queue.offer(neighbor);
                        //在旧图中每遍历到一个节点,就在map中给新图申请一个对应的内存
                        map.put(neighbor,newNode);
                    }
                    //根据旧图中的位置为新图添加邻居
                    map.get(cur).neighbors.add(map.get(neighbor));
                }
            }
            return res;
        }
  • 相关阅读:
    移动app测试
    centos7中tomcat安装步骤
    linux下搭建数据库
    Linux 学习笔记
    vi编辑器 使用表
    python-Xml 实战
    python-Excel 实战
    手写HashMap
    volatile关键字解析
    两个栈实现队列——优化版
  • 原文地址:https://www.cnblogs.com/stAr-1/p/9433050.html
Copyright © 2011-2022 走看看