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

    题目:克隆图

    问题描述:

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

    图中的每个节点都包含它的值 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;
        }
    }
    
    
  • 相关阅读:
    Python基础综合练习
    熟悉常用的Linux操作
    大数据概述
    C语言简易文法(无左递归)
    自动机
    C语言简易文法
    词法分析实验报告
    词法分析
    综合练习:词频统计
    组合数据类型综合练习
  • 原文地址:https://www.cnblogs.com/syhyfh/p/13253486.html
Copyright © 2011-2022 走看看