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]