二叉树的层级遍历以及[NOIP2015 普及组] 扫雷游戏、有效时间的数目

news2024/12/26 23:49:56

一、二叉树的层级遍历

二叉树的层级遍历看着比其他遍历简单,但是我感觉实施起来却比其他遍历难,它主要是通过队列实现的

比如在这样的一颗二叉树中

我没先将a入队        队列:a

当a出队的时候就将它的左儿子和右儿子入队        队列:b   f

然后将b出队,将b的左儿子和右儿子入队        队列:f   c   d

然后将f出队,将f的左儿子和右儿子入队        队列:c   d   g

依次类推,当出队完之后这就是一个层级遍历

代码实现  

#include<stdio.h>

#include<stdlib.h>

#define MAX 1000

int max = 0;



typedef struct tree

{

char date;  //存放数据

struct tree* left;   //左儿子

struct tree* right;  //右儿子

}tree, * bittree;



typedef struct

{

bittree base[MAX];  //基地址

int front;  //头指针

int rear;  //尾指针

}sqqueue;



bittree creat()

{

char x, y;

bittree s;

scanf_s("%c", &x);

y = getchar();

if (x == '-')s = NULL;

else

{

s = (bittree)malloc(sizeof(tree));

s->date = x;

printf("请输入%c的左结点:", s->date);

s->left = creat();

printf("请输入%c的右结点:", s->date);

s->right = creat();

}

return s;

}



void enqueue(sqqueue* q,bittree s)

{

if ((q->rear + 1) % MAX == q->front)printf("队已满");

else

{

q->base[q->rear] = s;

q->rear = (q->rear + 1) % MAX;

}

}



void dequeue(sqqueue* s)

{

if (s->front == s->rear)printf("队列为空");

else

{

printf("%c ", s->base[s->front]->date);

s->front = (s->front + 1) % MAX;

}

}



int cenorder(bittree s)

{

int num=0;

sqqueue q;

q.front = q.rear = 0;

bittree temp;

enqueue(&q,s);

while (1)

{

if (q.front == q.rear)break;

temp = q.base[q.front];

dequeue(&q);

if (temp->left != NULL)enqueue(&q, temp->left);

if (temp->right != NULL)enqueue(&q, temp->right);

if (temp->left == NULL && temp->right != NULL || temp->left != NULL && temp->right == NULL)num++;

}

return num;

}



int main()

{

int num;

bittree s;

printf("请输入第一个结点:");

s = creat();

printf("层级遍历为:");

num = cenorder(s);

printf("\n度为1的结点有%d个", num);

}

二、2437. 有效时有效时间的数目2437. 有效时

思路

这道题没什么好说的,存粹的逻辑题,这是你要注意一下该怎么判断,哪个点应该怎么做,我是通过一个个字母是否等于 ' ? ' 推出的;

代码实现

int countTime(char * time){
    int num=1;
    if(time[0]=='?'&& time[1]=='?')num=24;
    else if(time[0]=='?'&&time[1]<'4')num=3;
    else if(time[0]=='?'&&time[1]>='4')num=2;
    else if(time[1]=='?'&&time[0]=='2')num=4;
    else if(time[1]=='?'&&time[0]<'2')num=10;
    if(time[3]=='?'&&time[4]=='?')num*=60;
    else if(time[3]=='?'&&time[4]>='0')num*=6;
    else if(time[4]=='?'&&time[3]=='6')num*=1;
    else if(time[4]=='?'&&time[3]<'6')num*=10;
    return num;
}

三、[NOIP2015 普及组] 扫雷游戏

 

思路 

这道题就是统计一下 ' * ' 的8个方向到底有多少个 ' ? ' ,就这么简单,我觉得难的是字符串输入.......,因为是二维数组,每行输入的时候还要把换行输进去,所以就很麻烦,但是还是做出来了,不过挺狗血的

还有就是一点你答案的换行要输出正确,不然也是不对的.........

代码实现

#include<stdio.h>
int n, m;
int dx[8] = { 0,0,1,-1,1,1,-1,-1 };
int dy[8] = { 1,-1,0,0,1,-1,-1,1 };

int main()
{
	int i, j;
	char a = '0';
	scanf("%d %d", &n, &m);
	char dis[101][101];
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			scanf("%c", &dis[i][j]);
			if (dis[i][j] == '\n')scanf("%c", &dis[i][j]);
		}
	}
	for (i = 0; i < n; i++)for (j = 0; j < m; j++)
	{
		a = '0';
		if (dis[i][j] == '?')
		{
			for (int k = 0; k < 8; k++)
			{
				int xx = i + dx[k];
				int yy = j + dy[k];
				if (xx >= 0 && xx < n && yy >= 0 && yy < m){
					if (dis[xx][yy] == '*')a++;
				}
			}
			dis[i][j] = a;
		}
	}
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)printf("%c", dis[i][j]);
		printf("\n");
	}
	return 0;
}

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

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

相关文章

一图看懂 toml 模块:用于解析和创建TOML(Tom‘s Obvious, Minimal Language)的Python库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 [TOC](一图看懂 toml 模块&#xff1a;用于解析和创建TOML(Tom’s Obvious, Minimal Language)的Python库, 资料整理笔记&#xff08;大全&#xff09;) ☘️摘要 全文介绍系统内置…

leap模型重点关注技术,如:能源结构清洁转型、重点领域如工业、交通节能减排降耗、新能源发电系统及发电成本最优化、区域碳达峰碳中和实现路径设计及政策评估

模型简介&#xff1a; 中文名&#xff1a;LEAP模型 外文名&#xff1a;Long Range Energy Alternatives Planning System/ Low emission analysis platform 采用部门分析法建立的LEAP模型&#xff08;长期能源可替代规划模型&#xff09;是一种自下而上的能源-环境核算工具&a…

Spark大数据处理讲课笔记3.8 Spark RDD典型案例

文章目录 零、本节学习目标一、利用RDD计算总分与平均分&#xff08;一&#xff09;提出任务&#xff08;二&#xff09;准备工作1、启动HDFS服务2、启动Spark服务3、在本地创建成绩文件4、将成绩文件上传到HDFS &#xff08;三&#xff09;实现步骤1、打开RDD项目2、创建计算总…

FS2455高效率的同步降压DC-DC转换器5A输出电流

概述 FS2455是一种高效率的同步降压DC-DC转换器&#xff0c;具有5A输出电流。 FS2455在4.5V到30V的宽输入电压范围内工作&#xff0c; 集 成主开关和同步开关&#xff0c;具有非常低的RDS&#xff08;ON&#xff09;以最小化传导损失。 FS2455具有轻载时的应用和高效率。此外…

[GFCTF 2021]文件查看器(GZ、过滤器、phar) day4

打开界面直接一个登录界面&#xff0c;直接admin/admin登录进去 。 进来之后发现是一个文件查看器的功能 随便输入了点东西发现了报错&#xff0c;然后读取文件的功能&#xff0c;输入Files.classs.php发现读取不成功 换了个index.php <?phpfunction __autoload($classN…

无效的目标发行版: 11

背景&#xff1a;最近在研究es&#xff0c;想着弄一个连接es集群的springboot的工程&#xff0c;然后就在网上找到一个&#xff0c;结果弄到本地运行时&#xff0c;报错了“ 无效的目标发行版: 11 ” 看着报错就知道肯定是你导入的项目和你本地的JDK版本不匹配了&#xff0c;然…

手把手教你如何将安卓手机数据导入iPhone!【详解】

案例&#xff1a;安卓数据导入苹果手机 【大神们&#xff0c;刚换了新的苹果手机&#xff0c;原本的安卓手机数据怎么导入新手机&#xff1f;】 想要换用iPhone&#xff0c;但是又不想丢失安卓手机里的重要数据怎么办&#xff1f;如何将安卓手机数据导入iphone&#xff1f;本文…

如何学习5G网络优化才能拿高薪?我已摆烂,各位努力!

“内卷”和“躺平” 有的人卷成了麻花 有的人选择了躺下 毕竟只要躺得够平&#xff0c;就卷不到我 但是更多的人选择在“内卷”与“躺平”的徘徊抉择中 “躺”的核心是休息&#xff0c;“卷”的本质是提升 但是在优橙教育学习5G网络优化 大家学会将两者融合 学习的时候…

玩转ChatGPT:快速制作PPT

一、写在前面 首先还是让小Chat推销下自己&#xff1a; 你是否曾经为制作 PPT 而烦恼&#xff1f;现在有了 ChatGPT&#xff0c;再也不必担心灵感枯竭啦&#xff01;使用 ChatGPT 撰写 PPT 可以让你轻松地组织思路、快速得到内容&#xff0c;无需任何营销口号&#xff0c;Cha…

【算法与数据结构】队列

队列 队列&#xff1a;结构定义 队列是有一篇连续的存储区&#xff0c;其实连续性不重要&#xff0c;而是队列需要保持一个特性&#xff1a; 从队首出元素&#xff0c;从队尾入元素。这一点与顺序表不一样&#xff0c;元素加入的位置不一样 队列&#xff1a;只允许从尾部加入…

P1003 [NOIP2011 提高组] 铺地毯

题目提供者 CCF_NOI 难度 普及- 此篇必须看到底&#xff01; 题目描述 为了准备一个独特的颁奖典礼&#xff0c;组织者在会场的一片矩形区域&#xff08;可看做是平面直角坐标系的第一象限&#xff09;铺上一些矩形地毯。一共有 n 张地毯&#xff0c;编号从 1 到 n。现在…

电力物联网是什么?在智能配电系统中有什么作用?

摘要&#xff1a;在社会经济和科学技术不断发展中&#xff0c;配电网实现了角色转变&#xff0c;传统的单向供电服务形式已经被双向能流服务形式取代&#xff0c;社会多样化的用电需求也得以有效满足。随着物联网技术的发展&#xff0c;泛在电力物联网开始应用于当今的电力系统…

便携式挂钩型儿童椅 标准ASTMF1235测试项目周期多久?

便携式挂钩型儿童椅 适用于6 个 月至 3 岁之间的儿童&#xff0c;体重不超过 37 磅&#xff0c;并具 备自主协调坐姿的能力。 那么该类产品上亚马逊需要做下面的检测&#xff1a; 便携式儿童外出餐椅 ASTM F1235-18 和 CPSIA&#xff08;铅、邻苯二甲酸盐&#xff09; 亚马逊…

新手开始学【网络安全】要怎么入门?

前言&#xff1a;网络安全如何从零开始学习&#xff0c;少走弯路&#xff1f; 目录&#xff1a; 一&#xff0c;怎么入门&#xff1f; 1、Web 安全相关概念&#xff08;2 周&#xff09;2、熟悉渗透相关工具&#xff08;3 周&#xff09;3、渗透实战操作&#xff08;5 周&…

M304A-ZN-当贝纯净桌面-卡刷固件包-内有教程

M304A-ZN-当贝纯净桌面-卡刷固件包-内有教程 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的软件&#xff0c;运行速度提升…

用ChatGPT三分钟免费做出数字人视频- 提升自媒体魅力

用ChatGPT三分钟免费做出数字人视频- 提升自媒体魅力 一、ChatGPT产生文案二、腾讯智影网站三、选择一个2D数字人四、粘贴文本五、编辑自定义&#xff0c;合成六、资源七、其他数字人平台推荐八、生成视频预览 本教程收集于&#xff1a;AIGC从入门到精通教程汇总 操作指引 Ch…

KingbaseES V8R3 集群运维系列 -- sync_flag参数配置

​案例说明&#xff1a; 在KingbaseES V8R3集群一主二备的架构中&#xff0c;配置了流复制为同步(sync)模式&#xff0c;但是集群启动后&#xff0c;流复制状态中显示备库是async模式(备库和主库数据已经同步)&#xff0c;从备库的recovery.log日志也可以看到&#xff0c;备库启…

记录--前端实现点击选词功能

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 今天有一个需求&#xff0c;点击选中某个英文单词&#xff0c;然后对这个单词做一些处理&#xff0c;例如高亮背景、查看一些详细信息等等&#xff0c;今天简单实现了一下&#xff0c;效果如下&#x…

ChatGLM-6B本地cpu部署

ChatGLM-6B是清华团队研发的机器人对话系统&#xff0c;类似ChatGPT&#xff0c;但是实际相差很多&#xff0c;可以当作一个简单的ChatGPT。 ChatGLM部署默认是支持GPU加速&#xff0c;内存需要32G以上。普通的机器无法运行。但是可以部署本地cpu版本。 本地部署&#xff0c;需…

ePWM模块(3)

比较模块 CMPA:比较寄存器A,其值与TBCTR值比较,相同时,事件发送到动作模块。 CMPB:比较寄存器B,其值与TBCTR值比较,相同时,事件发送到动作模块。 CMPCTL:控制寄存器(重要) SHDWAFULL(或SHDWBFULL):CMPA(或B)阴影寄存器满标志位 0:未满 1:满了 SHDWAMODE(或…