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

    Clone Graph,采用BFS,同时用一个Map记录原先节点和现在节点的映射,顺便可以用来做visited check。一开始有两个错误,一是null的时候也要返回null,二是有可能节点0也有指向0本身的邻居,所以在对neighbors做遍历前要先放到map里。

    public class Solution {
        HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<UndirectedGraphNode, UndirectedGraphNode>();
        public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
            map.clear();
            return cloneNode(node);
        }
        
        private UndirectedGraphNode cloneNode(UndirectedGraphNode node)
        {
            if (node == null) return null;
            if (map.containsKey(node)) return map.get(node);
            else
            {
                UndirectedGraphNode copy = new UndirectedGraphNode(node.label);
                map.put(node, copy);
                for (UndirectedGraphNode n : node.neighbors)
                {
                    copy.neighbors.add(cloneNode(n));
                }
                return copy;
            }
        }
    }
    

      

  • 相关阅读:
    Windows多线程编程入门
    多字节字符与宽字符
    Linux静态库与动态库详解
    Linux下清理内存和Cache方法
    数据库设计范式
    mybatis面试问题
    Gson使用
    Linux 定时任务crontab使用
    Java-GC机制
    java内存模型
  • 原文地址:https://www.cnblogs.com/lautsie/p/3356392.html
Copyright © 2011-2022 走看看