广度优先搜索Java的简单代码

时间:2017-01-10 14:07:57

标签: java arraylist breadth-first-search

我有一个像这样的数组的ArrayList:

[11, 3]
[2, 3]
[0, 3]
[1, 4]
[5, 4]
[5, 7]
[6, 7]
[7, 8]
[8, 9]
[9, 10]
[0, 5]

我必须首先实现宽度,然后通过via从0到1,并通过将它们放入一个单独的数组中来打印所有值。

结果应为:[0 5 4 1]

请有人帮帮我。从哪里开始,做什么?

1 个答案:

答案 0 :(得分:0)

简单地解决这个问题。看起来你不了解发生了什么的一般想法,所以让我们分解为步骤。

  1. 绘制您的"树"。
  2. 使用您的第一组点来绘制树(或迷宫)的样子。你应该清楚地看到0-5-4-1的路径。

    1. 了解如何进行广度优先搜索。一般模式是从根开始向外看。我推荐一些关于如何在理论上正确地做到这一点的阅读(https://en.wikipedia.org/wiki/Breadth-first_search)。
    2. *提示(因为我猜这是作业):

        

      如果你在那组数据上运行它,搜索的前几个节点应该是0,3,4,2,11,4,7 ...... *

      1. 最后,用Java实现它。已经有很多问题和在线教程如何实现这一目标。我的建议是查看本网站上的一些相关内容,在网上查找。
      2. 不幸的是,如果你想继续使用你已经给出的阵列(不推荐),它将是一个相当无效的搜索。但是,这里有一些伪代码可以帮助您入门。

        bfs(starting position)
        for each element in the array
            find all elements related (connected) to starting position
            if(connectedNode = endNode)
                end search
            else 
                recursively call this function on the elements found