news 2026/7/7 21:01:27

广度/深度优先遍历思想

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
广度/深度优先遍历思想

广度优先遍历类似二叉树或者其他算法的层序遍历,一层一层的去搜索。

#include <stdio.h> typedef char VertexType typedef int edgetype #define Maxsize 100 typedef struct { VertexType vertex[Maxsize]; //定义一维数组来存储顶点 edgetype arc[Maxsize][Maxsize]; //二维数组保存连接状况 int vertex_num; //顶点数 int edge_num; //边数 } Mat_Grph; int visited[Maxsize] //定义一维数组,0表示没访问过,1表示访问过 int front = 0; int rear = 0; int queue[Maxsize]; //创建队头队尾和队数组 void create_graph(Mat_Grph *G){ //创建图 G->vertex_num = 9; G->edge_num = 15; G->vertex[0] = 'A'; G->vertex[1] = 'B'; G->vertex[2] = 'C'; G->vertex[3] = 'D'; G->vertex[4] = 'E'; G->vertex[5] = 'F'; G->vertex[6] = 'G'; G->vertex[7] = 'H'; G->vertex[8] = 'I'; for(int i = 0;i<G->vertex_num;i++){ for(int j = 0;j<G->vertex_num;j++){ G->arc[i][j] = 0; } } //先行覆盖二维数组为0 G->arc[0][1] = 1; G->arc[0][5] = 1; //A-B A-F G->arc[1][2] = 1; G->arc[1][6] = 1; G->arc[1][8] = 1; //B-C B-G B-I G->arc[2][3] = 1; G->arc[2][8] = 1; //C-D C-I G->arc[3][4] = 1; G->arc[3][6] = 1; G->arc[3][7] = 1; G->arc[3][8] = 1; //D-E D-G D-H D-I G->arc[4][5] = 1; G->arc[4][7] = 1; //E-F E-H G->arc[5][6] = 1; //F-G G->arc[6][7] = 1; //G-H for(int i = 0;i<G->vertex_num;i++){ for(int j = 0;j<G->vertex_num;j++){ G->arc[j][i] = G->arc[i][j]; //对称覆盖,因为是边双向的 } } void bfs(Mat_Grph G){ //bfs:breath first search int i = 0; visited[i] = 1; //更改状态为:已访问过 printf("%c\n",G->vertex[i]); queue[rear] = i; rear++; while(front!=rear){ i = queue[front]; front++; for(int k = 0;k<G->vertex_num;k++){ if(G->arc[i][k]==1&&visited[k]==0){ visited[k] = 1; printf("%c\n",G->vertex[k]); queue[rear] = k; rear++; } } } int main(){ Mat_Grph G; create_graph(&G); bfs(G); return 0; }

深度优先搜索类似树的先序遍历,头左右,走到整个树的最底下,无路可走(不能再向下延伸)时,依次返回上一个节点,再看有没有另一个同层序的孩子。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 20:05:52

【毕业设计】基于 SpringBoot+Vue 的校园论坛微信小程序的设计与实现基于springboot+微信小程序的校园活动管理系统设计与实现(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/7 17:29:14

【毕业设计】基于springboot+微信小程序的应急救援小能手软件系统的设计与实现(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/7 16:27:44

供应链区块链 App 开发:从溯源逻辑到智能合约编写的流程

供应链管理的核心痛点是信息不透明、数据篡改风险、多方协作信任成本高&#xff0c;而区块链的不可篡改、去中心化、可追溯特性可完美解决这些问题。本文从供应链溯源核心逻辑设计出发&#xff0c;完整讲解供应链区块链 App 的开发流程&#xff0c;涵盖需求拆解、智能合约编写、…

作者头像 李华
网站建设 2026/7/7 16:19:08

Linux用户管理

一、Linux特性&#xff1a;多用户&#xff0c;多任务同一时间&#xff0c;多个用户在同一系统执行不同任务互不影响二、Linux用户分类超级管理员root&#xff0c;UID0系统用户&#xff0c;无法登陆系统&#xff0c;主要作用是支撑系统运行&#xff0c;UID<1000普通用户&…

作者头像 李华
网站建设 2026/7/7 2:45:46

小程序毕设选题推荐:基于Springboot+微信小程序实现校园代取快递设计与实现基于springboot+微信小程序的跑腿小程序的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华