当前位置: 首页 > 知识库问答 >
问题:

显示了一个图的树形结构,在该图中用java执行了BFS遍历

郎和通
2023-03-14

我在研究广度优先搜索或BFS算法时,突然想到了一个主意。我展示了我实现了BFS的图的树形结构。现在也许我可以用链表以不同的方式显示树结构,但是我想修改我用来显示树结构的BFS方法

public class BFS
{ 

private Queue<Integer> queue;

public BFS()
{
    queue = new LinkedList<Integer>();
}

public void bfs(int adjacency_matrix[][], int source)
{
    int number_of_nodes = adjacency_matrix[source].length - 1;

    int[] visited = new int[number_of_nodes + 1];
    int i, element;

    visited[source] = 1;
    queue.add(source);

    while (!queue.isEmpty())
    {
        element = queue.remove();
        i = element;
        System.out.print(i + "\t");
        while (i <= number_of_nodes)
        {
            if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
            {
                queue.add(i);
                visited[i] = 1;
            }
            i++;
        }
    }
}

上面给出的是我的BFS方法,有人可以帮助我让我知道我必须对代码进行哪些确切的修改,以便我获得所需的输出

例如,假设给定的邻接矩阵如下:

 {0,1,0,0,0,1,0,0
 1,0,0,0,0,0,0,0
 0,0,0,0,0,0,1,0
 0,0,0,0,0,0,1,1
 0,0,0,0,0,1,0,0
 1,0,0,0,1,0,1,0
 0,0,1,0,0,1,0,1
 0,0,0,1,0,0,0,1}

这个图的树形结构应该是这样的

     A

   /   \

  B     F

      /   \

     E     G

        /   |   \

       C    H     D

共有1个答案

周超英
2023-03-14

使用BFS可以执行您描述的操作,但这很麻烦。后顺序遍历或按顺序遍历可能更合适。检查这里,看看什么适合。

 类似资料:
  • 我有一个无向图,从中我重新绘制了相同的图,但是是树状结构(有层次)。我知道广度优先搜索(BFS)算法是如何工作的,但我不知道如何从图转换 在这里,在维基百科的这篇文章中,如果你向下滚动一点,你会看到两张德国城市的照片。即使在阅读了那里的伪代码后,我还是不明白你是如何从第一张照片变成第二张的。

  • 我被困在我想从表中删除特定行对象的地步,但它是动态树结构,意味着可以使用所有Table方法随时创建,删除,重新排序对象等。 树结构是动态的,因此如何到达需要删除的叶子对象或中间对象。遍历所有的分支。 这里它可以是任意数量的节点、子节点、父节点。但是我需要遍历所有节点到所有叶子节点。 所以,我的问题是删除任何节点? 如果您有关于此问题的想法,建议,以便您的解决方案被接受。 提前感谢。 树形示例如下:

  • 考虑我想使用Stream API遍历树状结构的一些节点(类似的问题:[1],[2],[3])。首先想到的是: 上面的实现具有以下特性: 它几乎是懒惰的,在某种意义上,只有根节点的直接子节点将在流创建期间被检索(其他内部节点的子节点将在必要时被查询)。 它显示一个DFS遍历顺序。 现在考虑我有一个大的层次结构,<代码> GeHeaveNe()/Cux>操作非常昂贵,我正在寻找任何<代码>节点< /C

  • 本文向大家介绍Java递归遍历树形结构的实现代码,包括了Java递归遍历树形结构的实现代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码,具体代码如下所示: ps:java实现树的递归遍历(用于实现折叠菜单) 1.核心算法 2.实体类(部门) 以上所述是小编给大家介绍的Java递归遍历树形结构的相关内容,希望对大家有所帮助! 更多精彩内容请关注公众号【Java技术迷】,可

  • 问题内容: 因此,我正在尝试制作营销页面的原型,并使用Bootstrap和新的Font Awesome文件。问题是,当我尝试使用图标时,页面上呈现的所有内容都是一个大方块。 这是我将文件包括在头中的方式: 这是我尝试使用图标的示例: 但是所有这些都呈现在一个大方块中。有人知道会发生什么吗? 问题答案: 根据文档(第3步),您需要修改提供的CSS文件以指向站点上的字体位置。

  • 图形与显示 [AGP] agp={off|try_unsupported} off 表示关闭内核的AGP(CONFIG_AGP)支持; try_unsupported 表示尝试驱动那些不受支持的芯片(可能会导致系统崩溃或数据错误) [HW,DRM] gamma=浮点数 设置显示器的Gamma值。 video.brightness_switch_enabled={0|1} [背景知识]如果ACPI