当前位置: 首页 > news >正文

Java实现图数据结构,深度优先搜索竟能这么玩!快来看

通过Java实现图的数据结构, 前面自定义了顶点, 还自定义了栈与队列来实现搜索算法, 相对麻烦。要知道, 除邻接矩阵外, 可通过一个数组表示顶点集合。另外, 深度优先搜索得以递归调用实现, 而广度优先搜索必须经队列实现, 可直接用java.util工具包下面的队列替代, 如此图的实现便相对简单许多。

点的集合, 是图基本组成中不能少的一部分, 邻接矩阵, 也是图基本组成中不能少的一部分, 除此之外, 我们需定义边的数量, 以及用于广度优先搜索的队列。如下列图形所展示的那样, 这些是图的构成以及搜索所需的必不可少的属性, 于构造函数之中, 我们对这些属性进行初始化。

接着添加两个方法,分别是在图中添加顶点和边的信息。

有现成图的结构了, 在此处能够构建一个简易图, 是毫无方向的图。如下面所展示的图形那样, 顶点有七个, 边有六条。

深度优先搜索的想法是, 先从一个顶点着手进行遍历开端, 接着逐个遍历该顶点能够抵达的尽可能远的边直至尽头, 每一回皆是深入到不存在边可通达的顶点才停下。实际上能够借助递归方式来操作, 就以上面图像为例, 要是从A顶点开启遍历程序, 那么就逐个遍历BC DE FG, 当遍历B这个顶点之际且尚未完成, 会随着接着深入遍历到C顶点,当遍历D这个顶点之时且进行中, 会随着接着遍历E顶点, 同样的道理, 当遍历F这个顶点之际且未完结, 又会深入遍历到G顶点完成遍历过程。

广度优先搜索直观之处在于, 先对近处节点遍历, 接着对远处节点遍历, 一开始会遍历BCD, 后续一轮会遍历CEG。在此过程中无法使用递归, 需借助队列以保存早前遍历的顶点信息。当当前节点不存在邻接边时, 便以队列头部元素为起点展开同样的遍历, 直至队列中所有元素弹出, 也就是队列为空时遍历结束。

下面给出完整代码:

package com.xxx.algorithm.wh.graph2; import java.util.LinkedList; import java.util.Queue; public class Graph { private final int MAX_VERTS=20; private char[] vertexs; private int[][] matrix; private int nVerts; private Queue q; public Graph(){ vertexs = new char[MAX_VERTS]; matrix = new int[MAX_VERTS][MAX_VERTS]; for(int i=0;i(); } public void addEdge(int start,int end){ matrix[start][end] = 1; matrix[end][start] = 1; } public void addVertex(char label){ vertexs[nVerts++] = label; } public void deepFirstSearch(int v){ System.out.print("dfs : "); boolean visited[] = new boolean[MAX_VERTS]; for(int i=0;i

运行程序,打印信息如下:

dfs : A B C D E F G bfs : A B D F C E G

到这个地步, 仅是运用了一个类, 便达成了图数据结构的构建以及搜索这一行为, 相对而言是颇为简洁, 然而, 这样的一种方式, 仅适宜于简单的无向图, 稍微复杂些的带权图, 就并非如此简单罢了。

http://www.jsqmd.com/news/1360435/

相关文章:

  • 2026年南京十大正规旅行社**,纯玩两日游旅行团亲子游甄选推荐,含住宿含门票一站式服务 - 跟我去旅游
  • 基于SpringBoot和微信小程序的校服订购系统设计与实现
  • 终极解决方案:如何让老旧PL-2303芯片在Windows 10重获新生
  • 抖音内容管理终极指南:从单条视频到批量下载的完整解决方案
  • 武汉专升本机构哪家靠谱,哪家好,武汉华本教育到底怎么样? - 新闻快传
  • 本科护理考研必看:308护理综合关永俊博傲课程资料全解析 - 博傲教育
  • 医疗智能体一问药物相互作用就开始编?MedKGent 双智能体从1000万篇PubMed摘要构建297万条带置信度三元组,MedQA-US 最高提升8.4个百分点
  • Seaborn数据可视化:从入门到精通
  • 深入理解 Claude Code 的 Skills、MCP 与 Plugin:它们到底有什么区别
  • 2026年塘沽开发区女士发型定制测评:私人工作室专业度横向对比 - 新闻快传
  • 京东卡回收一般几折?2026市场行情解析与避坑要点 - 京顺回收
  • 5分钟搞定B站视频下载:BilibiliDown跨平台下载器完全指南
  • 最新必看|茂名汽车贴膜(贴车衣、汽车改色膜)哪家靠谱,这三家贴膜效果佳不踩坑 - 汽车新知百晓生
  • 多模型路由:构建个人AGI助手的技术原理与Python实战
  • 5分钟掌握Unity游戏实时翻译:XUnity自动翻译器终极指南
  • 宇宙学常数 Λ 的螺旋起源:为什么暗能量密度恰好是这个值?(附 Python 宇宙演化模拟)
  • 2026泰安卫生间防水靠谱、经验丰富、信誉好的公司推荐:专业卫生间防水,幸福满屋(8月防水最新资讯) - 吉林同城获客
  • SpringBoot宠物领养救助系统开发实战
  • 唐山手机回收价格与渠道怎么选?2026正规上门回收与避坑指南 - 新闻快传
  • 上海交通大学LaTeX幻灯片模板终极指南:轻松创建专业学术演示
  • 如何从视频中提取完美字幕:3步掌握本地OCR字幕提取技术
  • 2026年8月北京税务案件诉讼代理推荐标准是什么?7家律所专业能力维度全解析 - 品牌深度评测
  • 魔兽争霸3终极优化方案:开源工具WarcraftHelper实现144Hz高帧率体验完整指南
  • ComfyUI-Impact-Pack深度解析:专业级AI图像增强与工作流优化实战指南
  • Python租房数据分析系统:爬虫+机器学习+可视化实战
  • 2026年南京口碑最好的旅行社报团旅游**,正规旅行社亲子游纯玩团出行指南,亲子友好型深度讲解 - 跟我去旅游
  • 抖音批量下载工具完整指南:从零开始掌握高效无水印视频获取
  • 文旅参考!2026 年青甘大环线十佳旅行社**,本地纯玩定制环线游首选中港国旅 - 跟我去旅游
  • GetQzonehistory:免费开源工具,一键完整备份你的QQ空间记忆
  • Git误操作急救手册:开发者必备代码恢复指南