编写一个递归算法,实现将一棵二叉树的左右孩子互换。

2023-05-16

#include "iostream"
using namespace std;
#define max 20//定义树的结点数
typedef struct BTNode//定义二叉树结点类型
{
	char data;//结点数据类型
	struct BTNode *lc,*rc;//左右指针
}BTree;
BTree  *createtree(char *str,int i,int m)//将字符串str中第i到第m个字符创建树
{
	BTree *p;
	if(i >= m)
		return 0;
	p = (BTree*)malloc(sizeof(BTree));//生成新结点
	p->data = str[i];//将结点的第一个数据赋给根
	p->lc = createtree(str,2*i+1,m);//创建左子树
	p->rc = createtree(str,2*i+2,m);//创建右子树
	return (p);
}
BTree *Exchange(BTree *p)//将p指针指向的二叉树的左右子树进行互换。
{
	BTree *stack[max];//指针类型的堆栈
	int k = 0;
	stack[k] = 0;
	if(p != NULL)//交换p结点的左右孩子
	{
		k++;
		stack[k] = p->lc;
		p->lc = p->rc;
		p->rc = stack[k];

		p->lc = Exchange(p->lc);
		p->rc = Exchange(p->rc);
	}
	return(p);
}
void PreOrder(BTree *t)//先序遍历
{
	if(t != NULL)
	{
		cout<<t->data;
		if(t->lc)
		{
			cout<<"->";
			PreOrder(t->lc);
		}
		if(t->rc)
		{
			cout<<"->";
			PreOrder(t->rc);
		}
	}
}
int main()
{
	int i,n;
	char str[max];
	BTree *root;//二叉树根结点的指针

	cout<<"请输入结点数目n:";
	cin>>n;
	cout<<endl;

	cout<<"请输入"<<n<<"个结点:";
	for(i = 0;i < n;i++)
		cin>>str[i];

	root = createtree(str,0,n);  //创建树
	cout<<"交换前树的先序遍历:";
	PreOrder(root);
	cout<<endl;
	root = Exchange(root);//交换左右子树
	PreOrder(root);
	cout<<"交换后树的先序遍历:";
	system("pause");
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写一个递归算法,实现将一棵二叉树的左右孩子互换。 的相关文章

  • FR8016HA & MS1791 & PHY6222 & TLSR8251 & YC1171 & HS6621 & BK3432 & N32WB031 对比介绍

    富苪坤 FR8016HA 巨微 MS1791 奉加微 PHY6222 泰凌微 TLSR8251 易兆微 YC1171 昂瑞微 HS6621 博通 BK3432 国民技术 N32WB031 芯片简介 FR8016HA 是一款面向 SOC xf
  • AD7606分析讲解

    一 ad7606数据手册分析 引脚配置和功能描述 ADC7606的典型工作特性 FFT xff08 快速傅里叶变换 xff09 http azaleasays com 2008 10 17 fft and digital signal pr
  • 什么是航位推算(Dead Reckoning )

    只有同时接收三到四个GPS GNSS卫星的信号才能实现精确的GPS GNSS定位 当仅依靠GPS GNSS定位时 xff0c 可能会出现位置精度降低或丢失的情况 例如 xff0c 当车辆在无法接收GPS GNSS信号的区域 xff08 隧道
  • STM32F103系列引脚定义-功能图

    器件功能和配置 xff08 STM32F103XX增强型 xff09 系统结构 管脚图
  • 如何用keil5打开keil4的工程

    参考网友的方法 xff1a 1 到http www2 keil com mdk5 legacy 官网下载keil4的支持包 2 正常流程安装所下载的安装包 xff1b 3 安装完成后 xff0c 用keil5打开工程 xff08 keil4
  • NMEA-0183 协议简介

    NMEA 0183 是美国国家海洋电子协会 xff08 National Marine Electronics Association xff09 为海用电子设备制定的标准格式 目前业已成了 GPS 北斗导航设备统一的 RTCM xff08
  • 串口通信校验方式(even,odd,space,mark)UART数据波形分析

    1 even 每个字节传送整个过程中bit为1的个数是偶数个 xff08 校验位调整个数 xff09 2 odd 每个字节穿送整个过程中bit为1的个数是奇数个 xff08 校验位调整个数 xff09 3 noparity没有校验位 4 s
  • Linex Ubuntu环境下 Intel Realsense D435I 驱动+ROS驱动安装配置

    任务背景 在ROS环境中使用d435i xff0c 订阅图像和imu数据 任务概述 实现在ros中使用d435i主要有两步骤 xff1a 1 安装d435i sdk xff0c 即librealsense xff1b 2 安装realsen
  • C++ 实现简单Http服务器

    实现一个简单的Http服务器 xff0c 基于windows 平台 总共五个文件 HttpServer hpp HttpServer cpp Utils hpp Utils cpp main cpp Utils hpp span class
  • libcurl API介绍及简单编程

    libcurl编程 xff0c 主要采用callback function 回调函数 的形式完成传输任务 xff0c 用户在启动传输前设置好各类参数 和回调函数 xff0c 当满足条件时 libcurl 将调用用户的回调函数实现特定功能 下
  • git patch

    git patch用于将所做的修改进行打包 xff0c 然后再别的分支或给别人可以直接应用该patch xff0c 达到修改复用的效果 diff命令 git diff gt xxxx patch git diff xx file gt xx
  • WIFI知识 - MCS简介

    WIFI知识 MCS简介 MCS简介 802 11n 射频速率的配置通过 MCS xff08 Modulation and Coding Scheme xff0c 调制与编码策略 xff09 索引值实现 MCS 调制编码表是 802 11n
  • 802.11 QoS

    到了空调西瓜WiFi的夏日时光了 xff0c 家里用网的人一多 xff0c 难免会抢占起宽带资源来 有没有什么办法 xff0c 让家里所有人都可以得到一个比较不错的网络体验呢 xff1f 那今天你可以试试打开你路由器的QoS功能了 xff0
  • Wireshark抓包分析WLAN连接过程

    一个完整的WLAN连接过程 xff1a 一 xff1a WLAN扫描 主动扫描 xff1a 两种方式 xff1a xff08 1 xff09 向各个信道发出Probe Request帧并制定某个SSID xff0c 只有能够提供指定SSID
  • 802.11X用户身份验证 EAPOL

    EAPOL是什么 sogou com 802 11X用户身份验证 走看看 zoukankan com EAPOl的由来是基于802 1x网络访问认证技术 xff1a 802 1x协议起源于802 11协议 xff0c 后者是IEEE的无线局
  • git reset

    git reset 三种模式分别为 mixed 默认 soft hard 直接看官方的解释 其中HEAD代表版本库 xff0c index代表暂存区 xff0c 另外还有一个我们改代码的工作区 mixed 回退版本库 xff0c 暂存区 m
  • git reset还是git revert?

    reset和revert都可以用来回滚代码 但他们是有区别的 xff0c 准确来说 xff0c reset是用来 34 回退 34 到某个提交 xff0c 而revert是用来 34 撤销 34 某次或者某几次提交 xff0c 撤销也会作为
  • PR and MR

    GitHub 的 Pull Request 是指什么意思 xff1f 作者 xff1a 知乎用户 链接 xff1a https www zhihu com question 21682976 answer 79489643 来源 xff1a
  • python--基础知识点--subprocess模块

    subprocess 模块的介绍与使用 一 介绍 subprocess模块可以生成新的进程 xff0c 连接到它们的input output error管道 xff0c 同时获取它们的返回码 二 基本操作方法 1 subprocess的ru
  • Homebus(HBS)通信协议学习

    HBS通信主控与从机连接示意图 两根HBS总线之间的电压差大约为15V xff0c 差分信号分别加载到HBS的这两根总线上 用示波器的探头测得 xff08 探头的地在任意一根HBS总线上 xff0c 探头的信号输入端在另一根HBS总线上 x

随机推荐

  • RSA参数及RSA用法

    RSA算法n e d三个参数的意义 n为q p乘机 e为加密质数数值 d为解密质数数值 其中 e d p 1 q 1 61 1余数为1 其中p和q为2个足够大的素数 RSA的算法涉及三个参数 xff0c n e1 e2 其中 xff0c n
  • STM32的CAN

    一 CAN控制器简介 STM32自带了基本扩展CAN外设 xff0c 又称bxCAN xff0c bxCAN的特点如下 xff1a 1 支持CAN协议2 0A和2 0B主动模式 2 波特率最高达1Mbps 3 支持时间触发通信 4 具有3个
  • VSCode使用ssh密钥,不用每次输密码登录服务器的方法

    如果已经用ssh keygen 生成密钥了 xff0c 则跳过生成密钥这一步 客户端机器生成密钥 也就是vscode运行的机器 xff0c 在终端任意路径下输入 ssh keygen 生成密钥 本地 ssh keygen 默认目录在 ssh
  • Wi-Fi 802.11协议 管理帧 之 Auth帧详解

    Auth xff1a 链路认证 链路认证阶段主要是 AP 用来确认 Station 是否是 802 11 设备 xff0c 确认彼此是否可以正常通讯 xff0c 身份认证一般有为两种方式 xff0c 一种是开放系统认证 xff0c 另一种是
  • 802.11 协议介绍

    802 11协议基础 前言 OSI七层网络 开放式系统互联模型 xff08 Open System Interconnection Model xff09 是一种概念模型 xff0c 由国际标准化组织提出 xff0c 一个试图使各种计算机在
  • 802.11标准deauth报文的reason code中文版

    代码 原因 0 保留 1非特定原因 2以前的身份验证不再有效 3由于发送STA离开 xff08 或已经离开 xff09 ibs或ESS而被取消身份验证 4由于不活动而解除关联 5已解除关联 xff0c 因为AP无法处理所有当前关联的STA
  • 虚拟机ubuntu单向ping通

    可以单向ping通 xff0c 到win端查看VMnet8 xff0c 发现VMnet8不见了 找回方法 xff1a 在VMware中对NAT模式进行 还原默认设置 操作或者配置好后点击确定 xff08 注意 xff1a 虚拟机开机后无法还
  • Beyond compare文件夹内容自动比较

    前言 xff1a 在一开始比较文件都是手动一个个去点击文件 xff0c 如果是几万个代码文件这将是巨大的工程 xff0c 带着偷懒的想法跑去找方法真找到了 默认会全部的文件标红 xff0c 这就很难受了 解决方案 xff1a 顶部的菜单 会
  • 从MIT协议谈契约精神

    以前看到过李笑来讲的发生在他身上的故事 xff0c 说他当年 2001年 住在双榆树 xff0c 经常去双安商场的地下超市买东西 xff0c 有一次买了个什么东西觉得不好 xff0c 要退 xff0c 超市服务员说按规定 xff0c 该类商
  • VLC命令行使用帮助

    Usage vlc options stream You can specify multiple streams on the commandline They will be enqueued in the playlist The f
  • 将Conda Prompt Here添加到右键菜单

    如何将Conda Prompt Here添加到右键菜单 Conda是一个非常流行的Python的环境管理工具 xff0c 在做项目的时候把它跟IDE整合在一起用来管理不同项目的环境会很方便 xff0c 但是在日常使用Windows的过程中如
  • AMS-1117

    电路图 说明 10uF 61 10622uF 61 226100nF 61 104106 61 10乘以10的6次方pF xff1b 简单点的说就是106表示容量 10后面加六个零 单位pF 转换成uF就是10uF 电容之间的换算公式 xf
  • ROS---用catkin创建ROS包、编译

    安装好ROS后 xff0c 默认已经安装了catkin xff0c 接着执行以下步骤 用catkin创建ROS包 span class hljs comment 每次都要进入这个目录 xff0c 也就是所有的包都要放在这个目录下 span
  • libQtGui.so: undefined reference to `png

    使用Qt4 包在Centos上编译时 xff0c 出现libQtGui so 找到未定义的png等 首先进行网上搜索 xff0c 没有发现任何思路 执行ldd时 xff0c 发现少了很多依赖库 xff0c 如下 xff1a ldd libQ
  • C/C++中在头文件中定义函数或变量会出现的问题

    在 C C 43 43 中 xff0c 我们一般是把代码分为头文件 xff08 h xff09 和源文件 xff08 c cpp xff09 分开保存 xff0c 这样可以方便代码管理和阅读 但是如果把函数或变量的定义也放在头文件中会出现什
  • C++ 求100的阶乘

    include lt iostream gt using namespace std int main int n int k 61 1 k为当前的位数 int fact 10000 61 1 0 cout lt lt 34 输入阶乘n 3
  • C++ 读入一个整数,将各个数位上的数拆分下来并输出(从高位到低位)。

    include lt iostream gt include lt cmath gt using namespace std void split int num int n 61 num int count 61 0 位数 int tem
  • C++建立一个关于平面点坐标的类

    建立一个关于平面点坐标的类 include lt iostream gt include lt cmath gt using namespace std class Cpoint private int flag flag 61 1时 xf
  • 图---生成树与最小生成树

    今天在做题的时候遇到一个问题 xff0c 如何根据图的邻接表来画出 DFS 生成树和 BFS 生成树 xff0c 有两年的真题中涉及到这个问题 xff0c 在以前的学习中没注意过此问题 xff0c 由于严奶奶的书上也只是一带而过 xff0c
  • 编写一个递归算法,实现将一棵二叉树的左右孩子互换。

    include 34 iostream 34 using namespace std define max 20 定义树的结点数 typedef struct BTNode 定义二叉树结点类型 char data 结点数据类型 struct