一 广度优先遍历介绍


二 java代码

package leaning.graph;import java.util.LinkedList;
import java.util.Queue;public class BreadthFirstSearch {private String[] nodes = {"A","B","C","D","E","F","G","H","I"};private boolean [] isVisited = new boolean[9]; private int maxValue = Integer.MAX_VALUE;private int[][] map;Queue<String> queue=new LinkedList<String>();/** * 初始化地图 ( * 不连通 , 0 连通未访问 , 1 连通已访问 )*     A B C D E F G H I * 0 A * 0 * * * 0 * * ** 1 B 0 * 0 * * * 0 * 0* 2 C * 0 * 0 * * * * 0* 3 D * * 0 * 0 * 0 0 0* 4 E * * * 0 * 0 * 0 ** 5 F 0 * * * 0 * 0 * ** 6 G * 0 * 0 * 0 * 0 ** 7 H * * * 0 0 * 0 * ** 8 I * 0 0 0 * * * * ** * */public void initMap(){this.map = new int[9][9];this.map[0] = new int[]{maxValue,       0,maxValue,maxValue,maxValue,       0,maxValue,maxValue,maxValue};this.map[1] = new int[]{       0,maxValue,       0,maxValue,maxValue,maxValue,       0,maxValue,       0};this.map[2] = new int[]{maxValue,       0,maxValue,       0,maxValue,maxValue,maxValue,maxValue,       0};this.map[3] = new int[]{maxValue,maxValue,       0,maxValue,       0,maxValue,       0,       0,       0};this.map[4] = new int[]{maxValue,maxValue,maxValue,       0,maxValue,       0,maxValue,       0,maxValue};this.map[5] = new int[]{       0,maxValue,maxValue,maxValue,       0,maxValue,       0,maxValue,maxValue};this.map[6] = new int[]{maxValue,       0,maxValue,       0,maxValue,       0,maxValue,       0,maxValue};this.map[7] = new int[]{maxValue,maxValue,maxValue,       0,       0,maxValue,       0,maxValue,maxValue};this.map[8] = new int[]{maxValue,       0,       0,       0,maxValue,maxValue,maxValue,maxValue,maxValue};} /** 广度遍历入口* */public void  BFS(){this.queue.add(this.nodes[0]);//入队this.BFSMain();}/** 广度遍历算法核心* */public void BFSMain(){// 1 : 出队String currentNode = this.queue.poll();   int yValue = this.getYValue(currentNode);if(!this.isVisited[yValue]){System.out.print(currentNode+" ");this.isVisited[yValue] = true;}// 2 : 该节点下所有能访问的节点入队for(int i = 0; i<this.nodes.length ;i++){if(this.map[yValue][i]==0&&!this.isVisited[i]){this.queue.add(this.nodes[i]);}}// 3 : 如果队列不为空 ,则继续出队while(this.queue.size()!=0){this.BFSMain();}}//得到节点纵坐标的值public int getYValue(String node){int yValue = -1;for(int i = 0 ; i < this.nodes.length ;i++){if(this.nodes[i].equals(node)){yValue = i;break;}}return yValue;}public static void main(String[] args) {BreadthFirstSearch breadthFirstSearch = new BreadthFirstSearch();breadthFirstSearch.initMap();breadthFirstSearch.BFS();}}


三 输出结果

A B F C G I E D H

java广度优先遍历相关推荐

  1. python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...

    数据结构可以说是编程的内功心法,掌握好数据结构真的非常重要.目前基本上流行的数据结构都是c和c++版本的,我最近在学习python,尝试着用python实现了二叉树的基本操作.写下一篇博文,总结一下, ...

  2. 多级树的深度优先遍历与广度优先遍历(Java实现)

    目录 多级树的深度优先遍历与广度优先遍历(Java实现) 节点模型 深度优先遍历 广度优先遍历 多级树的深度优先遍历与广度优先遍历(Java实现) 深度优先遍历与广度优先遍历其实是属于图算法的一种,多 ...

  3. 图的理解:深度优先和广度优先遍历及其 Java 实现

    遍历 图的遍历,所谓遍历,即是对结点的访问.一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: 深度优先遍历 广度优先遍历 深度优先 深度优先遍历,从初始访问结点出发,我们知道 ...

  4. java 图的邻接矩阵表示,深度优先遍历,广度优先遍历

    转载:http://blog.csdn.net/yxmmao/article/details/51586540 1 . 创建图的邻接矩阵数据结构 public class MGraph {/*图的邻接 ...

  5. java list树 广度_java树的广度优先遍历思路

    我们使用广度优先遍历的办法, 来 遍历一棵树,我们就需要记录下每一层的节点,从每一层的节点中去获取下一层节点,所有我们需要有一个记录每层节点的容器来完成这个工作,简单点的办法就是使用队列,注意队列数据 ...

  6. java实现二叉树广度优先遍历_二叉树之深度优先和广度优先遍历(Java)

    tree.png 1. 二叉树结构定义 public static class Tree { int data; Tree left; Tree right; public Tree(int data ...

  7. 【树】二叉树遍历算法(深度优先、广度优先遍历,前序、中序、后序、层次)及Java实现...

    [树]二叉树遍历算法(深度优先.广度优先遍历,前序.中序.后序.层次)及Java实现 目录 一.前序遍历 二.中序遍历 三.后序遍历 四.层次遍历 遍历的作用 二叉树是一种非常重要的数据结构,很多其它 ...

  8. 图深度优先、广度优先遍历(java)

    一.图的遍历 图的遍历,即是对结点的访问.一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略:(1)深度优先遍历(2)广度优先遍历深度优先遍历基本思想. 二.深度优先遍历 图的深 ...

  9. java 树 广度优先遍历_Java二进制搜索树遍历操作的详细描述[前,中,后,层次,广度优先遍历]...

    本文介绍了Java二进制搜索树遍历操作. 与您分享以供参考,如下: 前言: 在Java Binary Search Tree Basics的上一节中,我们了解了该树及其相关知识,并对Binary Se ...

最新文章

  1. nmt模型源文本词项序列_「自然语言处理(NLP)」阿里团队--文本匹配模型(含源码)...
  2. (MYSQL学习笔记4)事务的开启、提交、回滚
  3. 利用gulp处理简单的前端问题
  4. Spring @Autowired、@Resource、@Required、@Component、@Repository、@Service、@Controller注解的用法和作用...
  5. linux大小写敏感和windows大小写不敏感(忽略大小写)导致的直接拷贝文件文件名冲突问题(需要打tar包再分享)
  6. iptables 配置后连接不上数据库_Linux服务器配置-VSFTP服务配置(三)
  7. 【CodeForces - 999D】Equalize the Remainders(思维,贪心)
  8. ASP.NET MVC5使用Area区域
  9. Hyper-V 2016 系列教程28 Hyper-v平台USB 外设解决方案介绍
  10. 蓝桥杯单片机历年真题答案
  11. 微信-连接一切的力量
  12. 幅度谱、相位谱、能量谱等语音信号处理中的基础知识
  13. “萝卜快跑”,“快”不起来——百度Robotaxi试乘体验
  14. .grf 读入报表模板失败,请检查网络连接、URL及读取权限,错误提示:网络服务器响应不成功
  15. maya检查模型重合点脚本
  16. qt 嵌入web页面_Qt与Web混合开发(一)--简单使用
  17. 小米10 MIUI11 安卓10安装面具获取root权限
  18. Linux系统磁盘分区及挂载 - fdisk
  19. zTree实现基本树
  20. Python简单处理excel数据(拆分合并单元格、根据表头合并sheet、添加列数、添加内容操作)

热门文章

  1. 【Java数据库】ORM思想:对象关系映射 使用Java容器存储多条记录
  2. netty系列之:一个价值上亿的网站速度优化方案
  3. JDK14性能管理工具:jstat使用介绍
  4. 分布式系统Lease机制
  5. linux out 日志,关于Linux中nohup.out日志过大问题(示例代码)
  6. centos 下载文件很慢_【已解决】Mac中从远程CentOS服务器中加速下载大文件
  7. java 中 阻塞队列 非阻塞队列 和普通队列的区别
  8. 08.update_by_query操作
  9. 19行代码AC——例题 6-2 铁轨(Rails, UVa 514)——解题报告
  10. Linux操作系统笔记——Shell变量