题目
思路
1.找到所有点
2.复制所有点
3.复制所有边
代码
"""
Definition for a undirected graph node
class UndirectedGraphNode:
def __init__(self, x):
self.label = x
self.neighbors = []
"""
class Solution:
"""
@param: node: A undirected graph node
@return: A undirected graph node
"""
def bfs(self, node):
queue = []
queue.append(node)
node_dict = {}
node_dict[node] = 1
res_nodes_list = []
while queue:
node = queue[0]
queue.pop(0)
res_nodes_list.append(node)
for neighbor in node.neighbors:
if not neighbor in node_dict:
node_dict[neighbor] = 1
queue.append(neighbor)
return res_nodes_list
def cloneGraph(self, node):
# write your code here
if not node: return None
nodes_list = self.bfs(node)
new_nodes_list = []
new_node_dict = {}
for i, node in enumerate(nodes_list):
new_node = UndirectedGraphNode(node.label)
new_node.neighbors = node.neighbors
new_nodes_list.append(new_node)
new_node_dict[node] = new_node
for node in new_nodes_list:
old_neighbors = node.neighbors
node.neighbors = []
for old_neighbor in old_neighbors:
node.neighbors.append(new_node_dict[old_neighbor])
return new_nodes_list[0]