133-克隆图 2020-08-12 Leetcode题解 133、克隆图题目:题解: 133、克隆图https://leetcode-cn.com/problems/clone-graph/ 题目: 题解:所谓深度克隆图,就是对图中每一个节点都new出来,而不是引用。因此就需要DFS深度遍历,此题节点对象中的neighbors是邻接矩阵,对于无向图来说,1——2相连,那么矩阵[0]中有2,矩阵[1]中有1,相当于两个点互相有向指向,因此需要处理重复遍历的问题。所以使用了字典(类似于hashmap),主键是node对象,值是深克隆的node_copy,递归遍历,将第一个点的所有邻居都递归遍历一边后,完成深克隆。 1234567891011121314151617181920212223"""# Definition for a Node.class Node: def __init__(self, val = 0, neighbors = []): self.val = val self.neighbors = neighbors"""class Solution: def cloneGraph(self, node: 'Node') -> 'Node': map_ = {} def dfs(node): if node is None: return if node in map_: return map_[node] clone = Node(node.val, []) map_[node] = clone for i in node.neighbors: clone.neighbors.append(dfs(i)) return clone return dfs(node) 上一篇:Shellshock漏洞分析与攻击实践 下一篇:73-矩阵置零