根据先序遍历输入,构建二叉树(不同于层次遍历)

STM32+HX711实战:5分钟搞定拉力传感器数据采集(附完整代码) 本文详细介绍了如何使用STM32微控制器和HX711模数转换器快速搭建高精度拉力测量系统。通过硬件连接指南、驱动实现代码和校准方法,帮助开发者在5分钟内完成拉力传感器数据采集,适用于工业自动化和消费电子等场景。 阅读详情


前言

由于之前王老师讲了怎么通过递归的方式利用 遍历序列的输入顺序构建 二叉树


一、思想基于递归遍历

例如 先序遍历 1 2 4 0 0 5 6 0 0 7 0 0 3 0 0 -1 (0表示当前结点为空,-1表示输入结束)

二、构建二叉树

1.先判断遍历顺序

如上面写的 先序序列

2.根据遍历类型写代码

代码如下(示例):

#include<bits/stdc++.h>
using namespace std;//根据遍历的次序,构建二叉树
struct BitTree{
	int data;
	struct BitTree *left,*right;
}; 
void PreCreatTree(BitTree * &root)  //这个比层次遍历简洁多了,而且不需要额外的0结点; 
{
	int d;
	root=(BitTree *)malloc(sizeof(BitTree));
	root->left=NULL,root->right=NULL;
	scanf("%d",&d);
	if(d==-1) return;
	if(d==0)
	{ 
	   free(root);
	   root=NULL;
	   return;
	}
	else root->data=d;
	PreCreatTree(root->left);
	PreCreatTree(root->right);
} 
void PreOrder(BitTree *head)
{
	if(head==NULL) return;
	else{
		printf(" %d",head->data);
		PreOrder(head->left);
		PreOrder(head->right);
	}
} 
void InOrder(BitTree *head){
	if(head==NULL) return;
	else{
		InOrder(head->left);
		printf(" %d",head->data);
		InOrder(head->right);
	}
}
void PostOrder(BitTree *head){
	if(head==NULL) return;
	else{
		PostOrder(head->left);
		PostOrder(head->right);
		printf(" %d",head->data);
	}
}
int main()
{
	BitTree *head=NULL;
	PreCreatTree(head);
	PreOrder(head);
	cout<<endl;
	InOrder(head);
	cout<<endl;
	PostOrder(head);
	return(0);
}
//测试数据:1 2 4 0 0 5 6 0 0 7 0 0 3 0 0 -1 要给先序序列 

总结

根据遍历的方式构建二叉树,很方便,不需要像层次遍历一样,还要用到队列,或者栈等数据结构。但是相关的题目很少看到,希望之后TZOJ把这个内容到实验课程里。

YOLOv11改进 ,YOLOv11改进主干网络为MobileNetV3,助力涨点 MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。 阅读详情

相关推荐

ResNet理论基础与具体实现(详细教程)

论文地址:Deep Residual Learning for Image Recognition ​ Identity Mappings in Deep Residual Networks pytroch源码地址:resnet 0x00 前言 ResNet是2015年就提出的网络结构,中文名字叫作深度残差网络,主要作用是图像分类。现在在图像分割、目标检测等领域都有很...

coordinate的博客 8331

利用先序遍历输入法建立二叉树

.利用先序遍历输入法建立二叉树:

weixin_57259781的博客 1万+

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络覆盖广,对物理攻击和自然灾害有一定的抵抗性。本文根据3GPP协议对NTN网络的背景、应用场景和信道模型进行了整理。

JCMLSY的博客 4927

数据结构之树:先序遍历二叉树(C & Python)

C和Python实现先序遍历二叉树非递归算法

guanchazhe55的博客 3369

宏基因组分析|从Binning到MAG优化的全流程实战指南

本文提供了一份宏基因组分析从Binning到MAG优化的全流程实战指南。详细解析了宏基因组分箱(Binning)的核心原理与必要性,并手把手指导如何利用Bowtie2、MetaBAT2和CheckM等工具构建分箱流水线,进行质量评估与筛选,最终获得高质量宏基因组组装基因组(MAG)。文章还分享了常见问题排查与进阶优化策略,为后续物种分类、功能注释等深度分析奠定坚实基础。

weixin_29260291的博客 455

QGIS三维地形可视化实战:从DEM数据到炫酷3D场景(附Qgis2threejs插件配置)

本文详细介绍了如何利用QGIS和Qgis2threejs插件,将DEM数据转化为交互式三维地形场景的完整工作流。核心内容包括DEM数据准备、坐标系选择(重点对比WGS 84与UTM的差异及影响)、插件核心参数配置、卫星影像与等高线叠加等进阶技巧,并提供了成果导出与常见问题解决方案,帮助用户高效创建可用于网页展示的炫酷3D可视化成果。

mqtt6iot的博客 875

二叉树的递归遍历(先序输入)

二叉树的先序中序后序遍历,二叉树的递归方式遍历

m0_63341217的博客 3801

Layout常见错误汇总-不定时更

1、在做LVS时,出现中断错误 解决方法: 重新建立新的schematic和layout文件,对应好其中的元器件,同时两个文件的名字也要对应好“schematic”和“layout”,其他名字的话软件找不到如何对应。

weixin_38753095的博客 4万+

树--先序遍历构建二叉树

需要在先序序列中用特殊字符补充空节点,使二叉树的建立唯一。从键盘输入二叉树的节点信息,建立二叉树的存储结构。当只有一个先序序列的时候无法确定为一个一颗二叉树。在建立二叉树的过程中按照二叉树先序方式建立。按照先序遍历序列建立二叉树的二叉链表。

RXY24601的博客 5091

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 791

【LDPC-7】LLR量化位宽对LDPC译码性能的影响分析——以最小和译码算法为例进行matlab仿真

最小和译码算法的步骤如下:最后译码结果如果满足或者完成所有迭代次数,则译码算法停止迭代,否则继续进行译码迭代操作。

FPGA/MATLAB学习教程/源码/项目合作开发 1471

二叉树的构建与遍历(先序、中序、后序、层次)

二叉树的构建与遍历

人生处处是围城,一切都是最好的安排! 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数据结构实验之求二叉树后序遍历和层次遍历

Problem Description 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历和层序遍历。 Input 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列。 Output 每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列。

逆水行舟 不进则退 359

visio安装包

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

二叉树的层次遍历(用队列来实现)

#include<stdio.h> #include<stdlib.h> #define MaxSize 50 typedef char ElemType; typedef struct BTNode { ElemType data; struct BTNode *left; struct BTNode *right; }BTNode,*BiTree; typedef struct Queue { BTNode *data[MaxSize]; //注意这里的data要.

qq_61706112的博客 906

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数据结构实验之二叉树五:层序遍历

Description 已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。 Input 输入数据有多行,第一行是一个整数t(t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。 Output 输出二叉树的层次遍历序列。 Sample Input 2 abd,,eg,,,cf,,, xnl,,i,,u,, Output abcdefg xnuli Hint #d...

qq_43090545的博客 317

【PTA】 二叉树的层次遍历C++ (20 分)

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

karshey的博客 973

层序遍历

数据结构实验之二叉树五:层序遍历 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。 Input 输入数据有多行,第一行是一个整数t (t<1000),代...

爱敲代码的小赤佬 2587

输出利用先序遍历创建的二叉树的层次遍历序列 swustoj

输出利用先序遍历创建的二叉树的层次遍历序列 1000(ms) 10000(kb) 2315 / 4935利用先序递归遍历算法创建二叉树并输出该二叉树的层次遍历序列。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需...

yyx的博客 1611

SDUT 3344 数据结构实验之二叉树五:层序遍历

数据结构实验之二叉树五:层序遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。 Input  输入数据有多行,第一

放纵不羁爱自由 424

二叉树层序遍历

Problem Description 已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。 Input  输入数据有多行,第一行是一个整数t (t,代表有t行测试数据。每行是一个长度小于50个字符的字符串。 Output  输出二叉树的层次遍历序列。 Example Input 2

shadowam的博客 561
上一篇: 稀疏矩阵的表示方法
下一篇: 拯救大兵瑞恩(P4011孤岛营救问题)(bfs+状态压缩)
NoahBBQ
博客等级 码龄8年 108粉丝 45原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值