邻接矩阵深度优先遍历

news2025/1/15 22:45:48

深度优先遍历,就是一条路,走到底,然后再走下一个岔路。

下面代码就主要使用递归来进行,当然也可以借助栈来实现。

  private void traverse(char v, boolean[] visited) {

        int index = _getIndexOfV(v);//获取v顶点在vertexS字符数组中的下标
        
        if (visited[index] == true) {//如果访问过,就返回,避免重复访问,造成严重后果
            return;
        }

        //没有访问过,就直接打印这个顶点
        System.out.print(v);
        visited[index]=true;//记得一打印完,就标记一下

        //然后遍历当前index行,一旦找到第一个没有访问的顶点,就递归
        for (int i = 0; i < vertexS.length; i++) {
            if (matrix[index][i] != 0 && !visited[i]) {//有这个目标顶点,并且没有访问过,进来
                System.out.print(" -> ");
                traverse(vertexS[i], visited);//递归深度遍历
            }
        }

    }

测试:

public class Test {

    public static void main(String[] args) {
        char[] array = {'A', 'B', 'C', 'D','E'};
        GrapByMatrix grap = new GrapByMatrix(array, false);
        grap.addEdge('A', 'B', 1);
        grap.addEdge('A', 'D', 1);
        grap.addEdge('B', 'C', 1);
        grap.addEdge('A', 'C', 1);

        grap.traverseByDepth('A');//使用深度优先遍历
    }
}

执行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1810595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

传感器技术

传感器技术 传感器概述传感器简介传感器的特性线性度灵敏度迟滞重复性传感器的动态特性 步进电动机步进电机的工作原理 传感器概述 传感器简介 传感器&#xff1a;能够感受被测量并按照一定规律转换成可用输出信号的器件或装置。 敏感元件&#xff1a;传感器中能直接感受或响…

Qwen 2 模型介绍及其应用探索

引言 Qwen 2 模型家族最近引起了广泛关注&#xff0c;作为继 Qwen 1.5 的升级版&#xff0c;这些模型在多语言支持、推理能力和长上下文处理等方面表现出色。本文将深入探讨 Qwen 2 模型的特点、应用场景以及具体的代码示例&#xff0c;帮助读者更好地理解和使用这些模型。 Q…

如何把java项目打包成jar包

以下就是图解过程 确定好以后 过一会就成这样了

Python 基础语法详解(四)

Python 基础语法详解&#xff08;四&#xff09; Python 条件语句最简单的 if 语句基本的 if 语句实战&#xff1a; 复杂 if 语句实战&#xff1a; 看一看 elif 的好处题目&#xff1a;代码实现&#xff1a; 三元表达式格式为&#xff1a;实操&#xff1a; Python 条件语句 在…

17个有用的CLI命令

作为前端开发工程师&#xff0c;我们需要了解哪些命令&#xff1f;如果您熟悉这些命令&#xff0c;它们将大大提高您的工作效率。 1. tree 你们知道如何列出一个目录的文件结构吗&#xff1f;它在显示文件之间的目录关系方面做得很好 commands ├── a.js ├── b.js ├── …

用GAN网络生成彩票号码

本文将详细解析如何使用生成对抗网络(GAN)来生成彩票号码。我们将介绍代码的每个部分,并给出详细注释,帮助读者理解整个过程。效果如下: 导入依赖 首先,我们需要导入所需的库。 import numpy as np import pandas as pd import torch import torch.nn as nn import t…

树莓派4B 零起点(三) 树莓派 VNC 远程桌面配置(1)

目录 一、启用树莓派4B的 VNC 服务 二、在PC的操作系统上安装VNC客户端 1、下载安装 RealVNC 2、下载安装 TigerVNC 三、登录VNC远程桌面 1、通过使用 ifconfig 查看树莓派的 IP 地址 2、启动 TigerVNC 客户端&#xff08;Windows版本演示&#xff09; 在前两章的基础下…

Java学习-MyBatis学习(一)

MyBatis MyBatis历史 MyBatis本是apache的一个开源项目iBatis&#xff0c;2010年这个项目由apache software foundation迁移到了google code&#xff0c;并且改名为MyBatis。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合&#xff0c;是一个基于J…

全球AI速递6.11

1.快手&#xff1a;发布“可灵”视频生成大模型。 2.OPPO&#xff1a;计划让约 5 千万用户的手机搭载生成式 AI。 3.腾讯&#xff1a;发布了针对混元文生图开源大模型&#xff08;混元DiT&#xff09;加速库。 4.Stability AI&#xff1a;开源Stable Audio Open AI 模型&am…

支付交易——在线支付系统基本概念

摘要 本文聚集于实战&#xff0c;只讲解最实用的知识点&#xff0c;至于支付起源、在线支付发展历程等科普知识&#xff0c;感兴趣的读者可参考其它优秀的支付类书籍或网络上其它优秀的文章。本章内容对大部分专业概念进行了极致简化&#xff0c;以便更好地帮助读者入门。实际…

假期已结束,大家都开始上班了吗

千行赏金APP&#xff1a;一站式悬赏任务平台详解 一、功能特点 千行赏金APP&#xff0c;作为一个综合性的悬赏任务平台&#xff0c;其功能特点突出&#xff0c;为用户提供了丰富的体验。首先&#xff0c;用户可以在平台上发布各类任务&#xff0c;如填写问卷、参与调研、试玩游…

UE5.2打包安卓

目录 简介: 一. 根据官网配置 二. 手动定位SDK路径 三: 设置Android基本信息 四: 设置KeyStore 五: 开始打包 六:其他 七. 总结 简介: UE5.2 打包安卓是指将使用 Unreal Engine 5.2 开发的项目编译为可在安卓设备上运行的安装包。 以下是一般的打包步骤&#xff1a; 安装…

苹果终于在美国以外地区推出Vision Pro 包括中国

世界上将有更多的人很快有机会购买苹果的MR头显。苹果公司今天宣布&#xff0c;售价 3499 美元的 Vision Pro将在全球范围内销售&#xff0c;并于 6 月 28 日开始推广。6 月 28 日&#xff0c;中国、日本和新加坡将成为美国以外首批获得 Vision Pro 的国家&#xff0c;德国、法…

【Pyqt6 学习笔记】实现串口调试助手,并将接收到数据模拟键盘输出

文章目录 代码示例main.pyscreen_shot_module.pyqrcmd.pyuntitled.pyuntitled.ui 本文内容是 【Pyqt6 学习笔记】DIY一个二维码解析生成小工具的延申&#xff0c;在原来的基础上实现了串口调试助手功能&#xff0c;并利用 pywinauto的 keyboard模块将接收到数据模拟键盘输出…

手机连接ESP8266的WIFI,进入内置网页,输入要显示的内容,在OLED显示屏上显示文本

在这篇技术博客中&#xff0c;我们将探讨如何使用ESP8266 Wi-Fi 模块和SSD1306 OLED显示屏&#xff0c;构建一个简易的信息显示和交互系统。此系统能够让用户通过一个简单的Web界面输入信息&#xff0c;并将其显示在OLED屏幕上。这种设备的应用非常广泛&#xff0c;可以用于智能…

5W-35W-150W-300W-500W铝壳功率电阻器

带铝制外壳的电阻器 EAK采用铝型材的导线电阻器将久经考验的导线材料的高脉冲稳定性与优化的导热和高度保护相结合。安装在导热表面上可进一步改善散热并提高稳定性。 连接线有各种长度和材料可供选择。可选配集成温度开关。也可根据客户要求提供定制组件。 该产品有多种版本…

Android MediaMetadataRetriever获取视频宽高,Java

Android MediaMetadataRetriever获取视频宽高&#xff0c;Java public static int[] getVideoSize(Context ctx, Uri uri) {MediaMetadataRetriever retriever new MediaMetadataRetriever();int[] size {-1, -1}; //宽&#xff0c;高try {retriever.setDataSource(ctx, uri)…

TPM加密狗的工作原理

在数字化时代&#xff0c;随着软件价值的不断提升&#xff0c;如何有效保护软件的知识产权、防止盗版和非法使用&#xff0c;成为了软件开发者和企业面临的重要挑战。TPM加密狗作为一种专门设计用于存储和处理加密密钥、证书和其他安全相关数据的硬件模块&#xff0c;为软件保护…

Android程序设计课程教学解决方案

引言 随着信息技术的飞速发展&#xff0c;智能手机和移动应用已成为现代生活不可或缺的一部分。Android作为全球最大的移动操作系统&#xff0c;其开发人才需求量巨大。高职院校作为培养高素质技能人才的重要基地&#xff0c;如何在Android程序设计课程中有效提升学生的实践能力…

计算机网络的概念及功能

文章目录 一、网络的概念二、计算机网络的定义三、计算机网络的功能1&#xff09;数据通信2&#xff09;资源共享3&#xff09;分布式处理4&#xff09;提高可靠性5&#xff09;负载均衡 一、网络的概念 网络&#xff1a;网样的东西或网状系统。 人体内的神经网络&#xff0c…