我们知道图是一种非线性数据结构。在此数据结构中,我们将一些值放入节点中,并且节点通过不同的边缘连接。由于我们可以将数据存储到图结构中,因此我们还需要从图中搜索元素以使用它们。
为了在图形中搜索,有两种不同的方法。广度优先搜索和深度优先搜索技术。
广度优先搜索(BFS)遍历是一种算法,用于访问给定图的所有节点。在这种遍历算法中,选择了一个节点,然后一个接一个地访问所有相邻节点。完成所有相邻顶点后,它会进一步移动以检查另一个顶点并再次检查其相邻顶点。要实现此算法,我们需要使用Queue数据结构。当所有相邻顶点完成时,所有相邻顶点都添加到队列中,从队列中删除一项,然后再次开始遍历该顶点。
深度优先搜索(DFS)是一种图遍历算法。在该算法中,给出了一个起始顶点,当找到相邻顶点时,它将首先移动到该相邻顶点并尝试以相同的方式遍历。它会在整个深度范围内进行尽可能多的移动,然后回溯到先前的顶点以查找新路径。
为了以迭代方式实现DFS,我们需要使用堆栈数据结构。如果我们要递归执行,则不需要外部堆栈,可以为递归调用完成内部堆栈。