图的广度优先搜索或 BFS17 Mar 2025 | 4 分钟阅读 什么是图?图是一种数据结构,我们将值以节点或顶点的形式存储。节点之间通过边连接,边可以是加权的也可以是未加权的。 如果两个节点之间存在边且该边包含一些权重,则我们称之为加权图。否则,称为未加权图。 未加权图是一种没有边权重的图。在这种类型的图中,边表示两个节点之间的连接。如果未加权图中节点 u 和 v 之间存在边,则 u 和 v 相互相邻。 为了遍历图,我们使用两种方法
在 DFS 中,我们使用递归访问起始节点的所有最深节点。这里,我们讨论的是 BFS。 BFSBFS 代表**广度优先搜索**,我们遍历源节点的所有相邻节点,然后依次解决相邻节点的问题。在 BFS 中,节点的遍历是径向进行的。 例如 ![]() 下一次迭代- ![]() 下一次迭代- ![]() 下一次迭代- ![]() 在上面的例子中,BFS 的顺序将是:0->1,2->3,4->5,6 我们将使用队列数据结构来获取图的 BFS 遍历。 Java 代码输出 ![]() 说明 在上面的例子中,我们有一个连接图,形式为邻接列表,其中每个节点都有其邻居节点的 ArrayList。 现在要实现 BFS 遍历,我们使用一个初始为空的队列数据结构,并且还使用一个布尔类型的访问数组,以确保我们不会包含已经在广度优先搜索遍历中覆盖的节点。 最初,我们将源节点标记为已访问并将其添加到队列中。现在,我们将迭代循环直到队列变空。每次,我们将移除队列中最上面的元素,将其添加到我们的答案中,并将其未访问的邻居添加到队列中并将其标记为已访问。 第一次迭代- 队列中有节点 0,我们将它添加到我们的答案中,它的邻居节点 1 和 2 将被添加到队列中并标记为已访问。 现在 q=1,2 且 answer=0。 现在我们将移除 1 并将其添加到我们的答案中,其未访问的邻居是 3。 所以现在 q=2,3 且 answer =0,1 现在我们将移除 2,将其添加到我们的答案中,其未访问的邻居是 4。 所以现在 q=3,4 且 answer = 0,1,2 现在我们将移除 3,将其添加到我们的答案中,其未访问的邻居为空。 所以现在 q=4 且 answer = 0,1,2,3 现在我们将移除 4,将其添加到我们的答案中,其未访问的邻居是 5,6。 所以现在 q=5,6 且 answer = 0,1,2,3,4 现在我们将移除 5,将其添加到我们的答案中,其未访问的邻居为空。 所以现在 q=6 且 answer = 0,1,2,3,4,5 现在我们将移除 6,将其添加到我们的答案中,其未访问的邻居为空。 所以现在 q=空 且 answer = 0,1,2,3,4,5,6 由于队列为空,我们将停止循环并从函数返回,然后打印结果。 时间复杂度:O(N+E),其中 N 是节点数,E 是边数 空间复杂度:O(N) -> 访问数组 O(N) 用于结果 + O(N) 用于队列。 如果图不连通如果图不连通,那么图将有多个源顶点。 因此,我们将为每个分量单独调用 BFS。 例如 ![]() Java 代码 输出 ![]() 时间复杂度:O(N+E),其中 N 是节点数,E 是边数 |
以下教程将讨论如何将键插入 B 树。此外,我们将看到在 C、C++、Java 和 Python 等不同编程语言中将键插入 B 树的一些工作示例。但在我们开始之前,让我们简要回顾一下……
阅读 26 分钟
荷兰国旗问题为看似简单的数组排序任务增添了一个既迷人又实用的转折。想象一个只包含 0、1 和 2 的数组,类似于荷兰国旗的红、白、蓝三色。这个奇怪的工作要求...
阅读 10 分钟
引言 股票买卖问题是一个著名的算法谜题,在算法交易、商业领域和其他地区都有应用。交易股票以最大化利润的场景是股票买卖争论的焦点。找出最大利润……
阅读 3 分钟
引言 创建世界上最复杂、最受欢迎的棋盘游戏之一的实体或数字版本,是设计国际象棋游戏的具有挑战性但有益的努力。国际象棋是一款两人策略游戏,需要精心准备、敏锐的观察……
阅读 12 分钟
链表是计算机科学和编程中广泛使用的数据结构。与在内存中存储数据的数组不同,链表由包含数据字段和指向其他节点的指针的节点组成。这些节点之间的连接导致它们被称为链表。链表...
阅读 12 分钟
引言 在计算机科学和算法的字符串处理中,回文提供了独特的可能性和挑战。回文子字符串是不对称的,这使得传统的字符串处理算法难以在长字符串中有效地识别和管理它们。在这种情况下,...作为一种有用的工具...
7 分钟阅读
中国邮递员问题或路线检查问题是一种欧拉回路问题,它在不重复访问每条边的情况下找到无向图中最短的闭合路径。这个问题在邮递员需要……
7 分钟阅读
问题陈述 一位新毕业生,拥有计算机科学学位,最近刚开始在 ShareChat 工作,并希望为应用程序的消息开发一个编码器。编码过程包括两个步骤:反转字符串 S 中的相邻字符,从第一个开始...
阅读 8 分钟
搜索问题自动完成,也称为自动建议或查看想法,是通常在网络搜索引擎和站点中找到的一个功能,它有助于用户形成他们的搜索问题。当用户开始在搜索栏中输入时,系统会预测并显示……
7 分钟阅读
引言 动态规划 (DP) 仍然是算法设计工具库中最强大的工具之一,尤其是在处理网格环境中的问题集时。从优化方法到最大化值,DP 的灵活性体现在基于网格的情况中,为复杂的优化挑战提供了有效答案。在此...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India