广度优先搜索(breadth-first search)可用于“图”这种数据结构中,查找最短路径。

树是一种特殊的图,二叉树是一种特殊的树。广度优先搜索常用于遍历二叉树,在这个遍历的过程中,需要用到队列这一先进先出(FIFO)的数据结构。

Queue<Node> queue = new LinkedList<>();

广度优先搜索是层级遍历,它依次遍历每一层的节点,并将该层所有节点的子节点添加到队列中,进行下一次遍历,直到遍历结束,队列为空

559. Maximum Depth of N-ary Tree

Loading...​leetcode.com

给定一个树,找出这个树的最大深度。

class Solution
{public int maxDepth(Node root) {if(root == null){return 0;}int maxDepth = 0;//用于记录最大深度Queue<Node> queue = new LinkedList<>();//队列queue.add(root);while(!queue.isEmpty())//直到队列为空,即,遍历完所有的节点{maxDepth++;//每遍历一层,计数+1int size = queue.size();//当前层节点的个数for(int i = 0; i < size; i++){Node node = queue.poll();//poll()方法,取出队首节点if(node.children != null)//如果存在子节点,需要将子节点依次添加到队列中,用于下一层遍历{List<Node> children = node.children;for(Node child : children){queue.add(child);}}}}return maxDepth;}
}

111. Minimum Depth of Binary Tree

Loading...​leetcode.com

给定一个二叉树,求出该二叉树的最小深度(没有子节点的节点,距离根节点的最小距离)。

class Solution
{/*** 解法:BFS,遍历每一层,找出第一个没有左右子节点的节点,返回即可。*/public int minDepth(TreeNode root) {if(root == null){return 0;}int minDepth = 0;Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int size = queue.size();minDepth++;for(int i = 0; i < size; i++){TreeNode node = queue.poll();if(node.left == null && node.right == null)//该节点没有子节点{return minDepth;}if(node.left != null)//左子节点不为空,添加到队列,进行下一层循环{queue.add(node.left);}if(node.right != null)//右子节点不为空,添加到队列,进行下一层循环{queue.add(node.right);}}}return minDepth;}
}

广度优先搜索_广度优先搜索(BFS)相关推荐

  1. 八数码深度优先搜索_深度优先搜索和广度优先搜索

    深度优先搜索和广度优先搜索 关于搜索&遍历 对于搜索来说,我们绝大多数情况下处理的都是叫 "所谓的暴力搜索" ,或者是说比较简单朴素的搜索,也就是说你在搜索的时候没有任何所 ...

  2. 网站没有搜索功能怎么搜索_如何搜索任何网站,即使它没有搜索功能

    网站没有搜索功能怎么搜索 You want to find specific information from a given website, but it doesn't offer search ...

  3. 根据邻接表求深度优先搜索和广度优先搜索_深度优先搜索/广度优先搜索与java的实现...

    度:某个顶点的度就是依附于该顶点的边的个数 子图:一幅图中所有边(包含依附边的顶点)的子集 路径:是由边顺序连接的一系列定点组成 环:至少含有一条边且终点和起点相同的路径 连通图:如果图中任一个到另一 ...

  4. 广度优先搜索_深度优先搜索和广度优先搜索[09]

    搜索与遍历 绝大多数搜索的处理叫暴力搜索,或者说比较简单朴素的搜索.如果数据结构本身没有任何特点,很普通的树或者图,我们要做的一件事就是把所有节点都遍历一次. 每个节点都要访问一次 每个节点仅仅要访问 ...

  5. nsoutlineview 搜索_阿里巴巴搜索推荐广告三位一体的在线服务体系

    最近在工作中大量使用到了淘系的在线分发服务体系,可以快速高效的实现个性化内容分发,其技术架构的概览在这里分享给大家. AI·OS(Artificial Intelligence Online Serv ...

  6. java实现图片搜索_图片搜索(java实现)

    [实例简介] 这是一个用pHash算法实现的图像搜索实例,供大家相互学习参考. [实例截图] [核心代码] ImageSearch └── ImageSearch ├── bin │   ├── cn ...

  7. 如何用python做搜索_善用搜索,精准查找Python进阶教程

    个人认为学习一门编程语言最好的方法就是提升自己的英语阅读理解能力,熟读该编程语言的官方文档,当然很多语言经历了许多年之后,在国内发展起来,很多热心的程序员或者网友会将其翻译成中文.但是,多年之后你已经 ...

  8. 数据结构(廿六) -- C语言版 -- 图 - 图的遍历 -- 邻接表 - 深度/广度优先遍历/搜索(DFS、BFS)

    内容预览 零.读前说明 一.深度优先遍历 1.1.深度优先的遍历过程 1.2.深度优先的遍历实现代码 二.广度优先遍历 2.1.广度优先的遍历过程 2.2.广度优先的遍历实现代码 三.源码测试效果 3 ...

  9. 广度优先搜索_计算机入门必备算法——广度优先遍历搜索

    1.  序言 又很久没有学习了,上次学到哈希表又称散列表的相关知识,这次我们学习一种新的数据结构来建立网络模型.这种数据结构被称作图.首先,我们先应该先了解一下什么是图,其次学习第一种图的算法,这种图 ...

最新文章

  1. Entrust - Laravel 用户权限系统解决方案
  2. 前端三十二:超链接(a标签)
  3. pytorch基础知识整理(二)数据加载
  4. 首次摆脱对梯度的依赖,CMU等开源Score-CAM:基于置信分数的视觉可解释性
  5. opencv 把3通道图像转成单通道_小强学Python+OpenCV之-1.4.3图像(矩阵)加减运算
  6. Android官方开发文档Training系列课程中文版:手势处理之滚动动画及Scroller
  7. 螺旋桨设计软件_第四届智能工业软件及设计技术研讨会暨2019天洑软件用户大会成功举办...
  8. CNN中全连接层是什么样的
  9. python pip install 总是出错的解决方法_pip安装总是失败怎么办? 3个方法帮你解决...
  10. iPhone设备字体详解
  11. 3Dmax各类问题汇总及其完整解决方法
  12. 沉睡者 - 抖音中视频计划横版16:9视频制作教程
  13. 为什么打工人996会猝死,而老板007不会?
  14. 伟大的数学家,怎么都诞生在法国?
  15. Ardunio开发实例-简单声音感应控制开关
  16. NotebookApp] 302 GET /?token=be0e8107dd84eab831a957b640602e5157b5336b15e7fa61 (127.0.0.1) 1.000000ms
  17. java项目中使用ffmpeg剪辑部分视频
  18. android访问win10共享文件夹,手机怎么用ES浏览器访问Win10共享文件教程
  19. 500元征集网站域名和网站名称
  20. 在博客里胡搞markdown排版是否搞错了什么

热门文章

  1. Hadoop应用实战100讲(二)-Hadoop常用命令汇总
  2. R语言实战应用精讲50篇(十一)-单因素方差分析 | 事后两两多重比较 | 趋势方差分析
  3. 精准评论是如何在娱乐类产品中大放异彩?
  4. 模式识别中Fisher分类器的Matlab实现及测试
  5. Python零碎知识(10):对日期时间的处理
  6. python百度地图api经纬度_从百度地图API接口批量获取地点的经纬度
  7. AI算法又整新活,去海边跳一支舞!
  8. 肖仰华:基于知识图谱的用户理解
  9. 日调度5万亿次,腾讯云微服务架构体系TSF深度解读
  10. Java泛型总结--转