PTA 是否完全二叉搜索树 C语言

7-2 是否完全二叉搜索树 (30 分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。... 阅读详情

将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。

输入格式:
输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。

输出格式:
将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。

输入样例1:

9
38 45 42 24 58 30 67 12 51

输出样例1:

38 45 24 58 42 30 12 67 51
YES

输入样例2:

8
38 24 12 45 58 67 42 51

输出样例2:

38 45 24 58 42 12 67 51
NO

易错
count的初始值为1不可为-1,因为若仅有根结点,不进递归函数,count仍需为1

代码实现

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int count = 1;
void pos(int T[], int root, int t) {//以层序遍历顺序插入
	if (t > T[root]) {
		if (T[2 * root] != 0) //当左结点不为空
			pos(T, 2 * root, t);//跟左结点比大小
		else {
			T[2 * root] = t;
			if (2 * root > count) count = 2 * root;
			return;
		}
	} else {
		if (T[2 * root + 1] != 0) //当右结点不为空
			pos(T, 2 * root + 1, t);
		else {
			T[2 * root + 1] = t;
			if (2 * root + 1 > count) count = 2 * root + 1;
			return;
		}
	}
}
int main() {
	int T[100] = {0};//完全二叉的题用数组存储
	int N;
	scanf("%d", &N);
	scanf("%d", &T[1]);
	int i = N - 1;
	while (i--) {
		int t;
		scanf("%d", &t);
		pos(T, 1, t);
	}
	int flag = 0;
	for (i = 1; i <= count; i++) {
		if (T[i] != 0) {
			if (i == count)
				printf("%d\n", T[i]);
			else
				printf("%d ", T[i]);
		} else { //若1~N间有空位
			flag = 1;
			continue;
		}
	}
	if (flag == 1)
		printf("NO\n");
	else printf("YES\n");
	printf("%d",count);
}
L2-011 玩转二叉树 L2-011玩转二叉树(25分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式: ... 阅读详情

相关推荐

L3-1 二叉搜索树的结构

二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科) 给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断给定的描述是否正确。例如将{ 2 4 1 3 0 }插入后,...

Lancer 1169

是否完全二叉搜索树 (树节点插入)

将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。 输入样例1: 9 38 45 42 24 58 30 6

qq_45141428的博客 745

完全二叉搜索树 PTA 04-树6 Complete Binary Search Tree 中序遍历法

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than the node’s key. The right ...

zhuiyisinian的博客 2289

PTA题目:是否完全二叉搜索树(数组解题,很好理解)

使用数组来存储一棵二叉搜索树,非常方便判断是否为完全二叉树,并且数组中的位置就是层序遍历的位置。

m0_62478418的博客 432

是否完全二叉搜索树

PTA-7-3 是否完全二叉搜索树 (30 分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的...

喝肾宝果奶 329

生信入门第七课:使用FastQC软件进行测序原始fastq数据质控

从实验到数据:RNA定量、文库片段长度、fastqc质控和fastp去接头

微生信 487

PTA天梯赛L3-010 是否完全二叉搜索树【二叉树】

将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多...

独钓门前月 384

机械工程师如何用Codex实现CAD自动化:从重复劳动到智能设计

在机械设计领域,CAD二次开发长期面临学习门槛高、维护成本大的难题。随着AI编程助手如Codex的出现,通过自然语言生成可执行代码,工程师无需精通编程即可实现图纸批量处理、BOM表自动生成、参数化建模等任务。这种技术将重复性操作自动化,显著提升设计效率,让工程师聚焦于核心创新。应用场景涵盖批量修改图纸属性、跨软件数据流转、自动打印等。本文分享机械工程师利用Codex落地自动化的实战经验与避坑指南。

weixin_32296621的博客 357

PTA 7-25 是否完全二叉搜索树 (30 分)

PTA 7-25 是否完全二叉搜索树 (30 分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。 输入

杨青葱的博客 280

数学建模:相关性分析学习——皮尔逊(pearson)相关系数与斯皮尔曼(spearman)相关系数

相关性分析:求解相关系数并绘制热力图进行对比

weixin_67565775的博客 8万+

【GlobalMapper精品教程】072:GlobalmapperV25中文版下载地址及安装教程

GlobalmapperV25中文版下载地址及安装教程安装包位于专栏完整数据包中,请订阅后从优快云私信查收!最新GlobalMapper中文版入门实战实验教程,图文并茂,实用性强,内容包括:GM基础操作、数据处理及地形图制作、航测内业数据处理、点云处理、地形分析、空间分析、数据库建库入库等。配套完整案例数据,持续同步更新!订阅专栏后,从私信查收中文安装包永久版(中文23.0+24.0)及配套实验数据包。

智慧空间实验室 4729

【PTA】L3-010 是否完全二叉搜索树 (30 分)

将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。 输入样例1: 9 38 45 42 24 58 30 6

海马有力量的博客 372

LangGraph实战训练营-从零构建AI驱动的wiki知识库

本文深入解析 LangChain 团队开源的 Deep Agents 框架核心示例——LLM Wiki,一个基于大语言模型自动构建和维护持久化知识库的生产级 AI Agent 系统。文章从项目架构、环境搭建、核心原理到实战操作全面展开:详解 CompositeBackend 组合后端与细粒度权限控制的安全设计、四种工作模式(初始化/摄取/查询/质量检查)的完整流程、LangSmith 远程沙箱的隔离执行机制,以及人机协同审核(HITL)的实践应用。

program哲学 197

[数据结构]是否完全二叉搜索树PTA

PTA自学

qq_61897765的博客 1692

小龙虾们的好伙伴专栏导航

本文系统解析了OpenClaw技术架构,包括Channel层和网关层的设计实现,并与AgentSkills等技术方案进行对比。同时提供了OpenClaw的系列实用指南,涵盖小龙虾培养、客户资源管理、系统自动化巡检以及技术趋势助手构建等应用场景,帮助用户从零成本入门到高效落地应用,实现业务全流程自动化管理。

wend的博客 210

uniapp [全端兼容] - 实现大文件上传分片/切片+本地选择文件上传超大文件,大文件切片上传+断点续传+上传进度条+失败自动重传,支持单个/批量上传图片、视频、文档各种文件(App、小程序、H5

uniapp 分片 断点续传 大文件上传。uniapp大文件切片上传,uniapp实现大文件上传 分片上传 进度条,分片上传附件,实现大文件上传,实现分片大文件上传,Uniapp实现大文件上传 分片上传 进度条,uniapp文件分片上传,uniapp如何上传很大的文件,在选择文件后,按指定大小将文件切割成独立的文件片,并逐片上传,uniapp 微信小程序上传大文件如何切片,uniapp APP实现大文件分片上传、断点续传、秒传,解决大文件上传问题,大文件上传如何做断点续传,uniapp上传视频,Uniapp

🏆 前端领域优质创作者 1万+

PTA 04-树6 Complete Binary Search Tree 完全二叉搜索树的构建

一、输入 第一行输入N 第二行输入N个数,用这N个数构建唯一的完全二叉搜索树 二、输出 输出构建好的完全二叉搜索树,层序输出 三、示例 1.输入 10 1 2 3 4 5 6 7 8 9 0 2.输出 6 3 8 1 5 7 9 0 2 4 四、代码 — C语言实现 思路: 将序列存到数组CBT中,再将数组排序,就得到一个按层级遍历从小到大排列的完全二叉树 再对完全二叉树进行中序遍历,每次中序遍历节点输出的时候,把数组CBT(完全二叉树)里的元素按顺序(由小到大)赋给另一个数组CBST(完全二叉

RP123123123的博客 1352

网工运维掌握OpenClaw这7大必备技能,自动化运维效率直接起飞

OpenClaw的核心就是它的技能系统。通过官方技能市场(clawhub.ai),你只需一条命令就能安装扩展,让AI代理变成你的“运维副手”。今天我就结合网工运维的真实痛点,精选7项最热门、最实用的OpenClaw技能(基于ClawHub下载量和实际测试),手把手教你安装、使用和进阶玩法。这些技能不是玩具,而是能直接提升运维效率10倍以上的生产力工具!安装后,你的OpenClaw代理就能自动处理Zabbix告警、总结syslog日志、更新Obsidian网络拓扑笔记、甚至通过n8n触发自动修复脚本。

网络技术联盟站 573

PTA 完全二叉搜索树 C语言代码

一个无重复的非负整数序列,必定对应唯一的一棵形状为完全二叉树的二叉搜索树。本题就要求你输出这棵树的层序遍历序列。

2201_75733174的博客 352

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

PTA(是否)完全二叉(搜索)树-->层序遍历

题目一:是否完全二叉搜索树 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。 输入样例1:

北边一颗小星星 1426

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

PTA 是否完全二叉树

将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。

Xm041206的博客 458

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

PTA 一 是否完全二叉树

构建左子树键值大右子树键值小的二叉搜索树

break;的博客 524

#数据结构与算法学习笔记#PTA16:完全二叉搜索树(C/C++)

2018.5.8 题目的意思很简单,给定一个任意的输入序列,把这个序列建成一棵完全二叉搜索树(既是一棵完全二叉树,又是一棵二叉搜索树),并且层次遍历打印出来。但是实现起来却并不那么轻松,完全二叉树一般用数组存储比较方便,而二叉搜索树用链表存储比较方便。 之前我们在《#数据结构与算法学习笔记#PTA10:层次遍历叶节点(JAVA)》中写到了如何利用队列将链表存储的二叉树进行层次遍历。因此最一开始...

NJU_ChopinXBP的博客 715

PTA Complete Binary Search Tree --- 完全二叉搜索树

概念解释: 主要思路: 对数组排序后:(使用c中函数 qsort 进行排序) 根据完全二叉树性质得到左子树的个数 这一部分代码在GetLeftLength函数中实现。 根据左子树的个数在排序数列中找到根结点放到数组中相应位置 solve函数中的TRoot就是在递归过程中根结点要存放的下标 代码: int GetLeftLength(int n) { // 计算n个结点的树左子树的结点个数 ...

lxin690的博客 627

PTA数据结构题目集 第四周——二叉搜索树&二叉平衡树

PTA数据结构题目集 第四周——二叉搜索树&二叉平衡树,涉及知识为二叉搜索树和平衡二叉树的基本操作,所用语言为c++。

cos的博客 2020
上一篇: PTA 修理牧场 C语言
下一篇: 2022年亚太杯二等奖队长兼论文手【赛后复盘】
快苏排序OAO
博客等级 码龄5年 273粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快苏排序OAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值