力扣133题,克隆图
import collections
class Node:
def __init__(self,val,alist):
self.val = val #存储这个节点的值
self.neighbors = alist #这个节点的邻接点
class Solution:
def cloneGraph(self,node): #node为第一个节点的引用
if not node:
return node
visited = dict() #visited为哈希表,用来存储原图中被访问过的节点和克隆图中对应节点,键值对为 原图中被访问过的节点:克隆图中对应节点
queue = collections.deque()
visited[node] = Node(node.val,[]) #克隆第一个节点并存储到哈希表中
queue.append(node) #将起始节点放入队列中
while queue:
node_u = queue.popleft() #从队列中取出左边第一个节点
for node_v in node_u.neighbors:
if node_v not in visited: #遍历该节点的所有未访问节点
visited[node_v] = Node(node_v.val,[])
queue.append(node_v)
visited[node_u].neighbors.append(visited[node_v])
return visited[node] #返回起始节点的克隆节点
我觉得官方解释没有给Node类,所以我自己补了一个
Solution里面的node为第一个节点的引用,每个节点既有值,又有邻接节点列表,具体是什么形式呢,
还有要怎么调用这个函数啊?
快b溃了