leetcode-133-克隆图

题目描述:

 

方法一:dfs+hashmap

"""
# Definition for a Node.
class Node:
    def __init__(self, val, neighbors):
        self.val = val
        self.neighbors = neighbors
"""
class Solution:
    def cloneGraph(self, node: 'Node') -> 'Node':
        if not node:
            return node
        dic = {}
        def dfs(node):
            if node not in dic:
                dic[node] = Node(node.val,[])
                for i in node.neighbors:
                    dic[node].neighbors.append(dfs(i))
            return dic[node]
        dfs(node)
        return dic[node]

 方法二:

class Solution:
    def cloneGraph(self, node: 'Node') -> 'Node':
        return copy.deepcopy(node)

 方法三:bfs

class Solution:
    def cloneGraph(self, node: 'Node') -> 'Node':
        if not node:
            return 
        queue = collections.deque()
        queue.append(node)
        visited = {}
        visited[node] = Node(node.val, [])
        while queue:
            tmp = queue.popleft()
            for i in tmp.neighbors:
                if i not in visited:
                    visited[i] = Node(i.val,[])
                    queue.append(i)
                visited[tmp].neighbors.append(visited[i])
        return visited[node]

 

posted @ 2019-07-16 14:32  oldby  阅读(139)  评论(0编辑  收藏  举报