2023.10.31

交换二叉树每个结点的左孩子和右孩子

#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
{
char data;//结点的值,char类型
struct BiTNode *lchild;//左孩子结点
struct BiTNode *rchild;//右孩子结点
}BiTNode,*BiTree;//*BiTree是结构体指针
//中序遍历输出 (左->根->右)
void zhongxu(BiTree T)
{
if(T!=NULL)
{
zhongxu(T->lchild);
printf("%c",T->data);
zhongxu(T->rchild);
}
}
//目的是交换结点
void swap(BiTree T)
{
if(T!=NULL)
{
BiTNode *m=T->lchild;/*这三行类似于"打擂台法"*/
T->lchild=T->rchild;
T->rchild=m;
swap(T->lchild);
swap(T->rchild);
}
}
void creat(BiTree *T) //创建二叉树
{
char ch;
scanf("%c",&ch);
if(ch=='#') //判断该字符ch是不是为'#',意思是该节点是不是空的
*T=NULL;
else
{
*T=(BiTree)malloc(sizeof(BiTNode)); //为结点T申请空间
(*T)->data=ch; //将ch的值赋给(*T)->data
creat(&(*T)->lchild);
creat(&(*T)->rchild);
}
}
int main()
{
BiTree T; //定义BiTree类型T
creat(&T);
zhongxu(T);
swap(T);
printf("\n");//换行,以免格式错误
zhongxu(T);
return 0;
}

posted @   我也不想的  阅读(1)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示