PTA二叉树的遍历

PTA 数据结构 二叉树的非递归遍历 pintia PTA 二叉树的非递归遍历 这一题写的我快要吐了,讲述一下心酸历程。 6-3 二叉树的非递归遍历 (10 分) 本题要求用非递归的方法实现对给定二叉树的 3 种遍历。 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree... 阅读详情

作者 高天

单位 临沂大学

      满二叉树是一种特殊的二叉树,它的每一层都是满的,也就是说每个节点都有两个子节点(除了最后一层)。设满二叉树的深度为d,则它总共有2d−1个节点

      现在给你一棵满二叉树的中序遍历,求出其层序遍历,按树形输出。

输入格式:

输入的第一行给出一个整数d——表示树的深度。

输入的第二行给出2d−1个整数——表示节点的编号。

1≤d≤10

输出格式:

输出共d行,表示该满二叉树的结构以及节点编号位置。

输入样例:

3
1 6 4 3 5 2 7

输出样例:

3
6 2
1 4 5 7

思路:

因为是中序排序,所以一直找中间的点输出就行。

 方法:

用bfs跑完整棵树。

 AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"

const ll N = 2e3+7;
ll n,m;
ll v[N];
bool vis[N];
queue<pair<ll,ll>>q;//存左边界和右边界 

void bfs(){
	ll f=0,k=q.size();
	for(ll i = 0 ; i < k ; i ++){
		ll x=q.front().first,y=q.front().second;
		q.pop();
		ll mid=x+y >> 1;//找中点 
		vis[mid]=1;//标记此点已经来过 
		f ++ ?  cout << " " << v[mid] : cout << v[mid];//输出
		if(!vis[x+mid >> 1])q.push({x,mid});//往左查找 
		if(!vis[mid+y+1 >> 1])q.push({mid+1,y});//往右查找 
	}
	cout << endl;
	if(!q.empty())bfs();
}

void solve(){
	cin >> n;
	m=1<<n;
	for(ll i = 1 ; i < m ; i ++)cin >> v[i];
	q.push({1,m-1});//初始左边界是1,右边界是m-1 
	bfs();
	return;
}

int main(){
	ll t=1;//cin >> t;
	while(t --)solve();
	return 0;
}

【PTA】6-9二叉树的遍历 【PTA】6-9二叉树的遍历 文章目录【PTA】6-9二叉树的遍历题目描述解题思路代码总结 题目描述 要求分别实现二叉树的四种遍历 即前中后以及层序遍历 接口定义如下 void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT ); vo... 阅读详情

相关推荐

从二叉树遍历到浪漫侧影:PTA天梯赛L2-3解题全解析

本文详细解析了PTA天梯赛L2-3题目'浪漫侧影'的解题思路,从二叉树的中序和后序遍历重建树结构,到生成左右视图的层次遍历技巧。通过生动的比喻和实战代码分析,帮助读者掌握二叉树遍历的核心算法及其在竞赛中的应用,特别适合准备天梯赛的选手学习。

weixin_26789847的博客 368

PTA 6-09 二叉树的非递归遍历

其中BinTreeint flag;要求 3 个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。此外,裁判程序中给出了堆栈的全套操作,可以直接调用。之所以写下了这篇博客介绍和分享其中我的见解与错误细节,也是想帮助后来的所需者提供一个思路和建议,不至于再手足无措。当然发出来这篇博客,如有不足之处或者哪里有问题也请看客老爷们指点一二!题目集持续更新ing~

2302_80250049的博客 1067

从仿真到实践:两级直接耦合放大电路的静态工作点协同调试指南

本文详细解析了两级直接耦合放大电路的静态工作点协同调试方法,从仿真到实践提供系统指南。重点介绍了Rc2电阻调整技巧、集电极电位测量方法及常见问题排查,帮助工程师解决各级静态工作点相互影响的难题,提升模拟电路设计效率。

weixin_29189373的博客 124

PTA 二叉树的遍历(实验)

PTA 二叉树的遍历(实验)

LMAO的博客 2841

常见的数值积分方法 (欧拉、中值、龙格-库塔,【常用于IMU中】)

1. 积分基本概念 设F(x)为函数f(x)的一个原函数,我们把函数f(x)的所有原函数F(x)+C(C为任意常数)叫做函数f(x)的不定积分(indefiniteintegral)。 非线性微分方程: 在有限的时间间隔Δt积分: 连续时间内积分: 工程上最常见的有三种:欧拉积分(Euler method)、中值积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下: ...

努力努力努力 2万+

YOLOv8中的C2f模块代码详解

在YOLOv8网络结构中,C2f模块(CSP Bottleneck with 2 Convolutions)是一个关键组件,用于实现跨阶段部分聚合

zzzyyy8的博客 3万+

[PTA][C语言][数据结构]树—二叉树遍历

二叉树遍历的几个题

weixin_52192405的博客 5242

优化dalsa相机检测界面

上节实现了使用qt结合dalsa相机显示检测到缺陷的画面,由于窗口过于简陋,本节将进行一个界面优化。

A1983Z的博客 987

二叉树的遍历 pta

  函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT ); void LevelorderTraversal( BinTree BT ); 其中BinTree结构定义如下: typedef stru...

huxiaoxi的博客 9570

传统方式部署 Hadoop 高可用集群

传统方式部署 Hadoop 高可用集群

寂夜了无痕的博客 265

汽车标定技术(七)--英飞凌TC3xx_Overlay实现页切换

今天说要开个专栏讲讲XCP标定,但在将标定之前,先把英飞凌专门为标定功能设计overlay功能讲解清楚。

认真搞搞汽车MCU 4015

PTA-二叉树的遍历(1020/1086/1102)

1020 Tree Traversals (25 分) Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree. Inpu

qq_45929428的博客 1613

如何使用freesurfer对T1w结构像进行分区指标的提取?——皮层面积,灰质体积,平均厚度,厚度标准差,平均曲率、高斯曲率、曲率指数、折叠指数

如何使用freesurfer对T1w结构像进行分区指标的提取?——皮层面积,灰质体积,平均厚度,厚度标准差,平均曲率、高斯曲率、曲率指数、折叠指数

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 3787

二叉树的建立和遍历

二叉树的建立和遍历

m0_63895067的博客 827

【Matlab算法】MATLAB实现的语音信号降噪算法(附MATLAB完整代码)

语音信号降噪是语音处理领域中的一个关键问题。在实际应用中,语音信号常常被各种环境噪声污染,这不仅影响了语音的质量,还可能导致后续处理(如语音识别)的性能下降。因此,开发有效的降噪算法对于提高语音通信质量、改善语音识别系统性能等具有重要意义。 本文将介绍并实现两种经典的语音信号降噪算法:谱减法和维纳滤波。这两种方法都是基于频域处理的技术,具有实现简单、计算效率高的特点。通过MATLAB实现这些算法,我们可以直观地比较它们的性能和降噪效果。

Albert_Lsk的博客 1329

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

c 打印二叉树_#图解 PTA「6-9 二叉树的遍历」

PTA是浙江大学设计类实验辅助教学平台。题目描述:本题要求给定二叉树的4种遍历。函数接口定义:void 其中BinTree结构定义如下:typedef 要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。裁判测试程序样例:#include 输出样例(对于图中给出的树):Inorder解题思路:前、中、后序都不值一提。唯一需要注意的是层次遍历。要进行层次遍历,需要建立一个循环队...

weixin_39781783的博客 143

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【PTA】二叉树的建立和遍历

输入数据分为2行,第1行为二叉树完全前序序列字符(包括#)个数,第2行为二叉树的完全前序序列。例如,上面二叉树的输入为:ABD##FE###CG#H##I##,其中#代表为空的位置。其中"preorder traversal:"、"inorder traversal:"、"postorder traversal:"、"level traversal:"为先序、中序、后序序列的提示信息。(5) 编写层序遍历算法,输出层序遍历序列,要求按层输出,每层输出一行;(4) 编写后序遍历算法,输出后序遍历序列;

Bonong的博客 3583

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

PTA 6-08 二叉树的遍历

其中BinTree要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。之所以写下了这篇博客介绍和分享其中我的见解与错误细节,也是想帮助后来的所需者提供一个思路和建议,不至于再手足无措。当然发出来这篇博客,如有不足之处或者哪里有问题也请看客老爷们指点一二!题目集持续更新ing~

2302_80250049的博客 612

PTA 二叉树的遍历

6-2 二叉树的遍历 (25分) 本题要求给定二叉树的4种遍历。 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT ); void LevelorderTraversal( BinTree BT ); 其中Bi...

weixin_44094072的博客 1818

PTA 6-9 二叉树的遍历 (25 分)-层序怎么遍历?

综述: 本题前中后序遍历二叉树都很简单,层序遍历就没那么容易了,我开始是用队列实现的层序遍历,但是不知道为什么在PTA上跑不过,但是在VS上我测试程序是没有问题的,可能是编译器的原因,在PTA上我只能用另一个方法实现层序的遍历,在本文中,将讲述队列实现层序遍历以及在PTA上跑过的另外一种方法遍历,其实两种方法的思想还是挺相像的。并且我在最后会贴上VS的测试用例。 目录 综述: 题目: 函数接口定义: 裁判测试程序样例: 输出样例(对于图中给出的树): 函数接口1-...

weixin_43691984的博客 1723

PTA 二叉树的非递归遍历 PTA

直接上代码 void InorderTraversal(BinTree BT) { Stack S = CreateStack(); BinTree p = BT; while (p != NULL || !IsEmpty(S)) { if(p!=NULL) { Push(S, p); ...

weixin_45653525的博客 2960

PTA 6-4 二叉树的遍历

其中BinTree要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。

superdoublesuper的博客 358

【PTA】二叉树的层次遍历

二叉树的层次遍历 编写程序,要求实现 (1)按先序遍历序列建立二叉树的二叉链表;(2)按层次遍历二叉树。 C++: 构成二叉链表的结点类代码如下: typedef struct BiNode { char data; //结点数据域 struct BiNode *lchild,*rchild; //左右孩子指针 }BiTNode,*BiTree; 按加入空树信息的先序遍历序列建立二叉树的二叉链表代码提供如下: //先序遍历序列建立二叉链表 void C

qq_51669241的博客 3109

二叉树的遍历PTA(详解)

本题要求给定二叉树的4种遍历。 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT ); void LevelorderTraversal( BinTree BT ); 其中BinTree结构定义如下: type...

qq_44256227的博客 1万+

pta 二叉树的遍历

根据输入构造二叉树,输出该二叉树的先序序列。二叉树共有N个节点,节点编号是1到N。约定1号节点是根节点。 输入格式: 第一行输入整数N。 接下来有N行,依次给出1到N节点的左孩子和右孩子。对于这N行中的每一行,有两个整数。第i(i=1, 2, ..., N)行中,第一个整数指出左孩子的编号,第二个整数指出右孩子的编号。如果整数值为0,表示没有左孩子或右孩子。 输出格式: 输出一行,内容是二叉树的先序序列。节点编号之间用空格隔开,行末有1个空格。 输入样例: 6 2 5 3 4 0 0 0 0

m0_62499697的博客 1242

pta——按层次遍历二叉树

先序遍历用递归构造二叉树,再辅助队列层次遍历

Bouquet_zxx的博客 1351
上一篇: PTA天梯赛座位分配
下一篇: PTA整除光棍
翰墨织梦
博客等级 码龄4年 0粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值