设树B是一棵采用链式结构存储的二叉树,编写一个把树 B中所有结点的左、右子树进行交换的函数 中国科学院大学2015年数据结构(c语言代码实现)

news2024/9/24 23:28:26

本题代码如下

void swap(tree* t)
{
	if (*t)// 如果当前节点非空  
	{
		treenode* temp = (*t)->lchild;// 临时存储左子节点  
		(*t)->lchild = (*t)->rchild;// 将右子节点赋值给左子节点
		(*t)->rchild = temp;// 将临时存储的左子节点赋值给右子节点 
		swap(&(*t)->lchild);// 递归交换左子树的左右子节点
		swap(&(*t)->rchild);// 递归交换右子树的左右子节点  
 }  
	}
}

完整测试代码

#include<stdio.h>
typedef struct treenode
{
	char data;
	struct treenode* lchild, * rchild;
}treenode,*tree;
void buildtree(tree* t)
{
	char ch;
	ch = getchar();
	if (ch == '#')
		*t = NULL;
	else
	{
		*t = (treenode*)malloc(sizeof(treenode));
		(*t)->data = ch;
		(*t)->lchild = NULL;
		(*t)->rchild = NULL;
		buildtree(&(*t)->lchild);
		buildtree(&(*t)->rchild);
	}
}
void swap(tree* t)
{
	if (*t)
	{
		treenode* temp = (*t)->lchild;
		(*t)->lchild = (*t)->rchild;
		(*t)->rchild = temp;
		swap(&(*t)->lchild);
		swap(&(*t)->rchild);
	}
}
void print(tree *t)
{
	if (*t)
	{
		printf("%c ", (*t)->data);
		print(&(*t)->lchild);
		print(&(*t)->rchild);
	}
}
int main()
{
	tree t;
	buildtree(&t);
	printf("原有的前序序列为:");
	print(&t);
	swap(&t);
	printf("\n交换后的前序序列为:");
	print(&t);
	return 0;
}

用ABD##E##CF##G##测试

 /*                      A

                B                C

        D             E  F            G    */

修改之后为

/*                A

        C                B

G        F        E        D  */

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

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

相关文章

c语言进制的转换10进制转换2进制

c语言进制的转换之10进制转换2进制 c语言10进制转换2进制 c语言进制的转换之10进制转换2进制一、10进制转换2进制的方法 一、10进制转换2进制的方法 十进制转二进制&#xff1a; 除二反序取余法&#xff1a;将十进制数每次除以2 取出余数 按照结果倒叙依次获取结果 END

机器学习实验一:KNN算法,手写数字数据集(使用汉明距离)(2)

KNN-手写数字数据集&#xff1a; 使用sklearn中的KNN算法工具包&#xff08; KNeighborsClassifier)替换实现分类器的构建&#xff0c;注意使用的是汉明距离&#xff1b; 运行结果&#xff1a;&#xff08;大概要运行4分钟左右&#xff09; 代码&#xff1a; import pandas as…

JavaWeb——Servlet原理、生命周期、IDEA中实现一个Servlet(全过程)

6、servlet 6.1、什么是servlet 在JavaWeb中&#xff0c;Servlet是基于Java编写的服务器端组件&#xff0c;用于处理客户端&#xff08;通常是Web浏览器&#xff09;发送的HTTP请求并生成相应的HTTP响应。Servlet运行在Web服务器上&#xff0c;与Web容器&#xff08;如Tomcat&…

警惕!又2本期刊被“On Hold”!

【SciencePub学术】 此前&#xff0c;继一本SSCI期刊被取消“On hold”标识后&#xff0c;仍处于“On Hold”状态的期刊有6本&#xff0c;其中包括4本SCI期刊和2本ESCI期刊。近日&#xff0c;经小编查询&#xff0c;又新增2本“On Hold”期刊&#xff0c;详情如下&#xff1a;…

实例演示:拉格朗日乘子法(Lagrange multiplier method)

拉格朗日乘子法&#xff08;Lagrange multiplier method&#xff09;是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子&#xff0c;可将有d个变量与k个约束条件的最优化问题转化为具有dk个变量的无约束优化问题求解。这种方法将一个有n个变量与k个约束条件的…

以数据赋能,星辰天合推进智慧化校园建设

近日&#xff0c;上海市高等教育学会校园网络专业委员会 2023 年度学术年会在上海举办&#xff0c;本次会议以“数智赋能教育 生成美好未来”为主题&#xff0c;围绕 AI 与教育融合、高校数字化转型创新发展等内容进行了专业研讨。 XSKY星辰天合解决方案总监李瑞宇作了《应用融…

ETHERNET/IP从站转CANOPEN主站连接AB系统的配置方法

你还在为配置网关的ETHERNET/IP从站和CANOPEN主站发愁吗&#xff1f;今天来教你解决办法&#xff01; 一&#xff0c;首先&#xff0c;配置网关的ETHERNET/IP从站&#xff0c;需要使用AB系统的配置方法&#xff0c;具体步骤如下 1&#xff0c;使用 AB 系统配置网关的 ETHERNET/…

Leetcode—547.省份数量【中等】

2023每日刷题&#xff08;八&#xff09; Leetcode—547.省份数量 实现代码 static int father[210] {0};int Find(int x) {if(x ! father[x]) {father[x] Find(father[x]);}return father[x]; }void Union(int x, int y) {int a Find(x);int b Find(y);if(a ! b) {fathe…

【java学习—八】单例设计模式(5)

文章目录 1. 相关概念2. 单例设计模式-饿汉式3. 单例设计模式-懒汉式4. 总结 1. 相关概念 单例&#xff1a;只有一个实例&#xff08;实例化对象&#xff09; 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的…

MTC怎么办理?什么产品需要做MTC?

什么是MTC认证&#xff1f; 欧盟MTC认证也叫EN 10204认证&#xff0c;也叫承压材质认证。主要是对金属&#xff0c;钢材的一个追溯来源。 对于所有风险等级压力设备的承压部件材料及直接焊接到承压部件上的附件&#xff0c; 压力设备制造商必须通过向材料制造商索要保证其可追溯…

Android 应用流量监控实践

背景 得物Apm系统本身包含网络接口性能监控的能力&#xff0c;但接口监控主要关注的是接口的耗时、异常率等信息&#xff0c;没有流量消耗相关维度的统计信息&#xff0c;并且一部分流量消耗可能来自于音视频等其他特殊场景&#xff0c;在接口监控的盲区外。 为了了解用户目前…

EPB功能开发与测试(基于ModelBase实现)

ModelBase是经纬恒润开发的车辆仿真软件&#xff0c;包含两个大版本&#xff1a;动力学版本、智能驾驶版本。动力学版包含高精度动力学模型&#xff0c;能很好地复现车辆在实际道路中运行的各种状态变化&#xff0c;可用于乘用车、商用车动力底盘系统算法开发、控制器仿真测试&…

嵌入式Linux_学习路线+基础知识

嵌入式Linux_学习路线基础知识 一、学习路线 说明&#xff1a;u-boot是一大块学起来需要三到六个月比较耗时&#xff0c;也属于比较落后的知识点&#xff0c;所以暂时不学习&#xff0c;内核也是如此暂时不学习&#xff0c;从应用层入手&#xff0c;先入门再深入 二、Shell指令…

企业CRM系统选型时的一些建议

随着市场环境的变化&#xff0c;越来越多的企业有了使用CRM客户管理系统的需求。市面上那么多的CRM品牌&#xff0c;我们该如何选择呢&#xff1f;下面我们就来说说企业CRM系统选型时的一些建议。 1、明确自身需求 企业要厘清使用CRM的目的&#xff1a;是遇到了只有CRM才能解…

友宝赴港上市能否成为无人零售业领头羊?

北京友宝在线科技股份有限公司&#xff08;以下简称“友宝”&#xff09;近日宣布赴港上市&#xff0c;拟募集资金2.35亿港元&#xff0c;这引起了业界和投资者的广泛关注。据了解这已经是友宝第三次冲击港股IPO了&#xff0c;但是至今仍在门外徘徊。 据招股说明书显示&#x…

zfile环境搭建(存储引擎为minio)

zfile项目地址 minio环境搭建参考 本地运行 修改zfile项目配置文件&#xff0c;更改数据库为MySQL&#xff08;注释掉灰色高亮部分&#xff0c;启用下面的 MySQL 信息并修改为你的数据库信息&#xff09; ## sqlite #spring.datasource.driver-class-nameorg.sqlite.JDBC #s…

【C++面向对象】3. 友元

文章目录 【 1. 友元函数 】【 2. 友元类 】 友元可以是一个函数&#xff0c;该函数被称为 友元函数&#xff1b;友元也可以是一个类&#xff0c;该类被称为 友元类。友元可以理解为 原类 的 朋友&#xff0c;友元&#xff08;友元函数和友元类&#xff09;不是原类的成员&…

【vue3】状态过渡-GSAP插件实现

效果图&#xff1a; 实现代码 安装库&#xff1a;npm install --save-dev gsap 引入&#xff1a;import gsap from gsap <template><div><el-input v-model"num.currNum" type"number" step"20" style"width: 120px;"…

基于多尺度分形残差注意力网络的超分辨率重建算法

1.引言 深度神经网络可以显著提高超分辨率的质量&#xff0c;但现有方法难以充分利用低分辨率尺度特征和通道信息&#xff0c;从而阻碍了卷积神经网络的表达能力。针对此类问题&#xff0c;本章提出了一种多尺度分形残差注意力网络&#xff08;Multi-scale Fractal Residual A…

js快速回顾

组成 书写位置 声明 ![在这里插入图片描述](https://img-blog.csdnimg.cn/83e92ae533714d5bb45d0cbb00d19e20.png)数据类型