• 克隆图


    题目:克隆图

    问题描述:

    给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。

    图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。

    class Node {
        public int val;
        public List<Node> neighbors;
    }
    

    解决思路:

    经过分析,此问题可分为3种情况来解决:
    1、如果 node 为空,则直接返回。
    2、如果 node 已经存在于用于存储已克隆节点的 map 中,那么也直接返回。
    3、按照2的逻辑,如果 node 不存在于 map 中,那么根据当前 node 创建新的克隆节点,并且根据 DFS 遍历 node 的邻接列表加入到新创建克隆节点的邻接列表中。

    解决代码:

    
    class Solution {
        private Map<Integer, Node> visitedMap = new HashMap<>();
    
        public Node cloneGraph(Node node) {
            // 1.
            if(node == null) {
                return null;
            }
    
            // 2.
            Node clone = visitedMap.get(node.val);
            if(clone != null) {
                return clone;
            }
    
            // 3.
            clone = new Node(node.val);
            visitedMap.put(node.val, clone);
            for(Node neighborNode : node.neighbors) {
                clone.neighbors.add(cloneGraph(neighborNode));
            }
    
            return clone;
        }
    }
    
    
  • 相关阅读:
    Java数组的使用
    Java的栈堆以及数组两种不同类型的定义
    Java数组声明的创建
    JAVA递归
    Java可变参数
    Java方法(类--------对象--------方法)
    html块元素和内联元素的区别
    HTML基础介绍
    CSS网页美化元素属性介绍
    ArrayList类的remove(Object o)方法简述
  • 原文地址:https://www.cnblogs.com/syhyfh/p/13253486.html
Copyright © 2020-2023  润新知