图的搜索——BFS和DFS

本文探讨了图的两种重要搜索算法——BFS(广度优先搜索)和DFS(深度优先搜索)。BFS利用队列数据结构,从源节点开始逐层探索;而DFS则采用递归,尽可能深入探索,无法前进时回溯寻找其他路径。这两种算法是理解图数据结构和相关算法的关键。
摘要由CSDN通过智能技术生成

图是一种重要的数据结构,许多图的算法一开始都会先通过搜索来获取图的结构或者图中结点所保存的信息,图的搜索技巧就是图的相关算法的核心。

图的搜索算法有两种设计核心,分别是BFS(breadth first search)和DFS(depth first search),表示广度优先搜索和深度优先搜索。

1.BFS搜索算法

所谓广度优先算法,就是对图G的边以结点为单位进行系统性的探索来发现从源节点出发能到达的其他所有结点,广度优先算法的特点是搜索位置每到达一个点,就会挨个继续探索这个点的所有连接其他点的边(从上一个点到达这个点的边除外),整体上来看是从图的一个源点出发,在某一个方向上层层递进的搜索方式。BFS算法的设计核心是对于队列这一数据结构的利用,我们在队列中存储的是搜索顺序,队列头就是目前搜索位置所在的结点。

class Solution {
   
        public void search(List<List<Integer>>map) {
   
            /*
            * 形参二维数组map表示图,数组的一维表示图的结点,二维表示结点的边所
            * 连接的另一个结点。
            
            * 队列BFS表示搜索顺序。
            
            * searchPos用来存储每一个结点的状态(是否被搜索过),
            * false表示未被搜索,true表示以被搜索。
            */
            Queue<Integer>BFS=new LinkedList<>();
            boolean[]searchPos=new boolean[map.size()];
           
            for(int i=0;i<map
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值