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

本题代码如下

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.mzph.cn/news/120300.shtml

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

相关文章

【ModbusTCP协议】

ModbusTCP协议 一、搭建一个ModbusTCP环境二、ModbusTCP通信协议报文格式ModbusTCP的特点 一、搭建一个ModbusTCP环境 搭建一个ModbusTCP环境 1、使用ModbusSlave 2、可以用西门子PLC来做 使用西门子搭建ModbusTCP环境&#xff0c;就需要先搭建一个西门子PLC仿真环境 下载软件P…

NSS [SWPUCTF 2021 新生赛]sql

NSS [SWPUCTF 2021 新生赛]sql 很明显是sql&#xff0c;有waf。 参数是wllm get型传参&#xff0c;有回显&#xff0c;单引号闭合&#xff0c;回显位3 跑个fuzz看看waf 过滤了空格 and 报错注入 空格->%09 ->like and->&&爆库&#xff1a;test_db -1%27uni…

网络扫描与网络监听

前言&#xff1a;前文给大家介绍了网络安全相关方面的基础知识体系&#xff0c;以及什么是黑客&#xff0c;本篇文章笔者就给大家带来“黑客攻击五部曲”中的网络扫描和网络监听 目录 黑客攻击五部曲 网络扫描 按扫描策略分类 按照扫描方式分类 被动式策略 系统用户扫描 …

如何保证分布式情况下的幂等性

关于这个分布式服务的幂等性,这是在使用分布式服务的时候会经常遇到的问题,比如,重复提交的问题。而幂等性,就是为了解决问题存在的一个概念了。 什么是幂等 幂等(idempotent、idempotence)是⼀个数学与计算机学概念,常⻅于抽象代数中。 在编程中⼀个幂等操作的特点是…

JS防抖与节流(含实例各二种写法 介绍原理)

防抖 防抖是什么&#xff1f; 单位时间内&#xff0c;频繁触发事件&#xff0c;只执行最后一次 通俗易懂点就是把防抖想象成MOBA游戏的回城&#xff0c;在回城过程中被打断就要重来 例子&#xff1a;我们来做一个效果&#xff0c;我们鼠标在盒子上移动&#xff0c;数字就变化 …

如何在外网访问内网服务器数据库

在外网访问内网服务器上的数据库需要一定的网络设置和安全配置。这是一个常见的需求&#xff0c;尤其是对于远程办公、云服务集成或远程数据库管理来说。以下是一些一般的步骤&#xff0c;您可以按照这些步骤进行配置&#xff1a; 请注意&#xff1a;外网访问内网服务器数据库需…

SQL 表达式

SQL 表达式 表达式是计算值的一个或多个值、运算符和SQL函数的组合。这些SQL表达式类似于公式&#xff0c;它们是用查询语言编写的。 您还可以使用它们查询数据库中的特定数据集。 句法 考虑SELECT语句的基本语法&#xff0c;如下所示&#xff1a; SELECT column1, column2, …

CVE-2021-41773/42013 apache路径穿越漏洞

影响范围 CVE-2021-41773 Apache HTTP server 2.4.49 CVE-2021-42013 Apache HTTP server 2.4.49/2.4.50 漏洞原理 Apache HTTP Server 2.4.49版本使用的ap_normalize_path函数在对路径参数进行规范化时会先进行url解码&#xff0c;然后判断是否存在…/的路径穿越符&#xf…

CMMI/ASPICE认证咨询及工具服务

服务概述 质量专家戴明博士的名言“如果你不能描述做事情的过程&#xff0c;那么你不知道你在做什么”。过程是连接有能力的工程师和先进技术的纽带&#xff0c;因此产品开发过程直接决定了产品的质量和研发的效率。 经纬恒润可结合多体系要求&#xff0c;如IATF16949\ISO26262…

Java 基础面试题,JVM 内存模型?

我们在 Java 岗位的面试题中&#xff0c;大概率会碰到这样一个面试题&#xff1a;请你解释你对 JVM 内存模型的理解。 今天我们就来回答一下这个问题&#xff1a; JDK 11 中的 JVM 内存模型可以分为以下几个部分&#xff1a; 程序计数器&#xff08;Program Counter&#xff…

汽车行驶性能的主观评价方法(1)-底盘校准方法

底盘校准的目的是&#xff0c;从行驶性能和行驶舒适性两个方面进行协调&#xff0c;从而优化行驶动力学特性。为了达到这一目标&#xff0c;工程人员早在设计阶段&#xff0c;就对大多数对行驶动力性有重要意义的部件提出了要求。这些要求不仅与底盘的组件有关&#xff0c;还必…

每日汇评:黄金争取本周收于2000美元上方

在周五美国个人消费支出通胀之前&#xff0c;金价巩固了周四的双向价格走势&#xff1b; 在市场情绪改善之际&#xff0c;美元与美债收益率一同下跌&#xff1b; 黄金价格在日线图上确认了一个多头标志&#xff0c;相对强弱指数仍然指向更多的上涨&#xff1b; 周五早盘&#x…

django建站过程(3)定义模型与管理页

定义模型与管理页 定义模型[models.py]迁移模型向管理注册模型[admin.py]注册模型使用Admin.site.register(模型名)修改Django后台管理的名称定义管理列表页面应用名称修改管理列表添加查询功能 django shell交互式shell会话 认证和授权 定义模型[models.py] 模仿博客形式&…

Vue源码总结

1&#xff0c;根据vue工程package.json配置文件查看scripts命令&#xff0c;找到build命令执行的js文件 2&#xff0c;根据构建执行的js文件继续跟进&#xff0c;找到主入口文件 3&#xff0c;从主入口文件直接分析主干代码&#xff0c;追踪export的Vue对象 4&#xff0c;跟…

MINA架构DEMO

参考&#xff1a;Java中的MINA框架_java mina_小陈拾光的博客-CSDN博客 MINA&#xff1a;一个简洁易用的基于TCP/IP通信的JAVA框架。 <dependency><groupId>org.apache.mina</groupId><artifactId>mina-core</artifactId><version>2.1.5&…

学习笔记:概率期望

概率 & 期望 样本空间、随机事件 定义 一个随机现象中可能发生的不能再细分的结果被称为 样本点。所有样本点的集合称为 样本空间&#xff0c;通常用 Ω \Omega Ω 来表示。 一个 随机事件 是样本空间 Ω \Omega Ω 的子集&#xff0c;它由若干样本点构成&#xff0c…

minio + linux + docker + spring boot实现文件上传与下载

minio docker spring boot实现文件上传与下载 1.在linux上安装并启动docker2.在docker中拉取minio并启动3.Spring Boot 整合 minio4.测试 minio 文件上传、下载及图片预览等功能 1.在linux上安装并启动docker 检查linux内核&#xff0c;必须是3.10以上 uname ‐r安装docker…

LiveGBS流媒体平台GB/T28181常见问题-海康大华宇视硬件NVR摄像头通道0未获取到视频通道如何排查如何抓包分析

LiveGBS常见问题海康大华宇视硬件NVR摄像头通道0未获取到视频通道如何排查如何抓包分析&#xff1f; 1、硬件NVR配置接入示例2、通道数为0处置2.1、判断信令是否畅通2.1.1、点击更新通道2.1.2、有成功提示2.1.2.1、确认设备的视频通道编码是否填写2.1.2.2、确认是否超过授权数目…

linux 音视频架构 linux音视频开发

linux 音视频架构 linux音视频开发 转载 mob6454cc65110a 2023-07-26 22:27:01 文章标签 linux 音视频架构 ci QT 视频教程 文章分类 架构 后端开发 阅读数117 目录 前言1、软件工具准备a. 录音软件b. 录屏软件c. 摄像头软件d. 安卓屏幕操作软件e. 视频剪辑软件2、视频教…

Mask Free VIS笔记(CVPR2023 不需要mask标注的实例分割)

paper: Mask-Free Video Instance Segmentation github 一般模型学instance segmentation都是要有mask标注的&#xff0c; 不过mask标注既耗时又枯燥&#xff0c;所以paper中仅用目标框的标注来实现实例分割。 主要针对视频的实例分割。 之前也有box-supervised实例分割&…