Data structures 访问每个连接的节点而不访问一次以上

Data structures 访问每个连接的节点而不访问一次以上,data-structures,Data Structures,A有一组对象。每个对象都包含其连接到的其他对象的列表,但并非所有对象都连接到每个其他对象。我试图访问连接到特定起始对象的每个对象。实现这一点最明显的方法是: 将连接到起点的每个对象放入队列中 对于队列中的每个对象: 在此对象上执行任何操作 将此对象添加到已访问对象的列表中 检查每个连接到此对象的对象是否在此已访问列表中,如果不是,则将其添加到队列中 有没有更好的方法不包括存储每个访问对象的列表?鉴于您描述的数据结构(任何对象都可以连接到任何其他对象),我认为您除了保留已访问的列表之外别无

A有一组对象。每个对象都包含其连接到的其他对象的列表,但并非所有对象都连接到每个其他对象。我试图访问连接到特定起始对象的每个对象。实现这一点最明显的方法是:

  • 将连接到起点的每个对象放入队列中
  • 对于队列中的每个对象:
    • 在此对象上执行任何操作
    • 将此对象添加到已访问对象的列表中
    • 检查每个连接到此对象的对象是否在此已访问列表中,如果不是,则将其添加到队列中

有没有更好的方法不包括存储每个访问对象的列表?

鉴于您描述的数据结构(任何对象都可以连接到任何其他对象),我认为您除了保留已访问的列表之外别无选择。如果您的对象处于分层树结构中,那么可以实现递归树遍历算法来执行您想要的操作

在对等连接对象的结构中,任何试图删除已访问列表的算法都有可能陷入无限循环以获取循环引用。我想您可以在对象本身中创建一个“已访问”标志,在某些算法运行之前将它们全部清除,但这似乎比列表方法更笨拙(而且本质上不太支持线程)