java广度优先遍历
一 广度优先遍历介绍
二 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广度优先遍历相关推荐
- python、java实现二叉树,细说二叉树添加节点、深度优先(先序、中序、后续)遍历 、广度优先 遍历算法...
数据结构可以说是编程的内功心法,掌握好数据结构真的非常重要.目前基本上流行的数据结构都是c和c++版本的,我最近在学习python,尝试着用python实现了二叉树的基本操作.写下一篇博文,总结一下, ...
- 多级树的深度优先遍历与广度优先遍历(Java实现)
目录 多级树的深度优先遍历与广度优先遍历(Java实现) 节点模型 深度优先遍历 广度优先遍历 多级树的深度优先遍历与广度优先遍历(Java实现) 深度优先遍历与广度优先遍历其实是属于图算法的一种,多 ...
- 图的理解:深度优先和广度优先遍历及其 Java 实现
遍历 图的遍历,所谓遍历,即是对结点的访问.一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: 深度优先遍历 广度优先遍历 深度优先 深度优先遍历,从初始访问结点出发,我们知道 ...
- java 图的邻接矩阵表示,深度优先遍历,广度优先遍历
转载:http://blog.csdn.net/yxmmao/article/details/51586540 1 . 创建图的邻接矩阵数据结构 public class MGraph {/*图的邻接 ...
- java list树 广度_java树的广度优先遍历思路
我们使用广度优先遍历的办法, 来 遍历一棵树,我们就需要记录下每一层的节点,从每一层的节点中去获取下一层节点,所有我们需要有一个记录每层节点的容器来完成这个工作,简单点的办法就是使用队列,注意队列数据 ...
- java实现二叉树广度优先遍历_二叉树之深度优先和广度优先遍历(Java)
tree.png 1. 二叉树结构定义 public static class Tree { int data; Tree left; Tree right; public Tree(int data ...
- 【树】二叉树遍历算法(深度优先、广度优先遍历,前序、中序、后序、层次)及Java实现...
[树]二叉树遍历算法(深度优先.广度优先遍历,前序.中序.后序.层次)及Java实现 目录 一.前序遍历 二.中序遍历 三.后序遍历 四.层次遍历 遍历的作用 二叉树是一种非常重要的数据结构,很多其它 ...
- 图深度优先、广度优先遍历(java)
一.图的遍历 图的遍历,即是对结点的访问.一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略:(1)深度优先遍历(2)广度优先遍历深度优先遍历基本思想. 二.深度优先遍历 图的深 ...
- java 树 广度优先遍历_Java二进制搜索树遍历操作的详细描述[前,中,后,层次,广度优先遍历]...
本文介绍了Java二进制搜索树遍历操作. 与您分享以供参考,如下: 前言: 在Java Binary Search Tree Basics的上一节中,我们了解了该树及其相关知识,并对Binary Se ...
最新文章
- nmt模型源文本词项序列_「自然语言处理(NLP)」阿里团队--文本匹配模型(含源码)...
- (MYSQL学习笔记4)事务的开启、提交、回滚
- 利用gulp处理简单的前端问题
- Spring @Autowired、@Resource、@Required、@Component、@Repository、@Service、@Controller注解的用法和作用...
- linux大小写敏感和windows大小写不敏感(忽略大小写)导致的直接拷贝文件文件名冲突问题(需要打tar包再分享)
- iptables 配置后连接不上数据库_Linux服务器配置-VSFTP服务配置(三)
- 【CodeForces - 999D】Equalize the Remainders(思维,贪心)
- ASP.NET MVC5使用Area区域
- Hyper-V 2016 系列教程28 Hyper-v平台USB 外设解决方案介绍
- 蓝桥杯单片机历年真题答案
- 微信-连接一切的力量
- 幅度谱、相位谱、能量谱等语音信号处理中的基础知识
- “萝卜快跑”,“快”不起来——百度Robotaxi试乘体验
- .grf 读入报表模板失败,请检查网络连接、URL及读取权限,错误提示:网络服务器响应不成功
- maya检查模型重合点脚本
- qt 嵌入web页面_Qt与Web混合开发(一)--简单使用
- 小米10 MIUI11 安卓10安装面具获取root权限
- Linux系统磁盘分区及挂载 - fdisk
- zTree实现基本树
- Python简单处理excel数据(拆分合并单元格、根据表头合并sheet、添加列数、添加内容操作)
热门文章
- 【Java数据库】ORM思想:对象关系映射 使用Java容器存储多条记录
- netty系列之:一个价值上亿的网站速度优化方案
- JDK14性能管理工具:jstat使用介绍
- 分布式系统Lease机制
- linux out 日志,关于Linux中nohup.out日志过大问题(示例代码)
- centos 下载文件很慢_【已解决】Mac中从远程CentOS服务器中加速下载大文件
- java 中 阻塞队列 非阻塞队列 和普通队列的区别
- 08.update_by_query操作
- 19行代码AC——例题 6-2 铁轨(Rails, UVa 514)——解题报告
- Linux操作系统笔记——Shell变量