代码之家  ›  专栏  ›  技术社区  ›  user2914067

Java广度优先搜索?

  •  -1
  • user2914067  · 技术社区  · 11 年前

    所以我试图对我拥有的节点列表进行广度优先搜索,但我不确定从何开始?我非常了解广度优先搜索是什么,但我不知道如何实现它。我的代码如下:

     Scanner scanner = new Scanner(System.in);
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   Warlord    11 年前

    广度优先搜索是在树、图或类似结构的数据上执行的。实现广度优先搜索的想法是探索一层节点,同时存储对下一层节点的引用,以便在完成当前层后返回到它们。

    为了实现这一点,可以使用 queue 。从第一个节点开始,将所有连接的节点放入队列的后面。然后从队列中选择第一个节点并重复。

    如果您在树结构上执行此操作,这就是它的全部功能。如果您在搜索图形,您需要确保不重新访问节点,否则您可能会陷入循环。希望这能稍微澄清一下这个话题。