使用深度优先搜索或广度优先搜索进行遍历,判断是否已经访问过该节点,避免重复访问,从而缩短遍历的时间复杂度。示例代码如下:
深度优先搜索:
visited = set()
def dfs(node):
if node not in visited:
visited.add(node)
for neighbor in node.neighbors:
dfs(neighbor)
广度优先搜索:
visited = set()
def bfs(start):
queue = [start]
while queue:
node = queue.pop(0)
if node not in visited:
visited.add(node)
queue.extend([neighbor for neighbor in node.neighbors])