永发信息网

设一棵二叉树以二叉链表为储存结构,设计一个递归算法将所有结点的左右子树互换

答案:1  悬赏:0  手机版
解决时间 2021-04-12 03:55
大哥,大姐帮帮忙啊!!!设一棵二叉树以二叉链表为储存结构,设计一个递归算法将所有结点的左右子树互换,小弟不胜感激!!!
最佳答案

//我做了一个程序,可以实现二叉树的左右子树的交换功能,


#include<iostream.h>



typedef char datatype; // 树的结点数据类型为字符型,可以根据需要修改
typedef struct node *pointer; // 定义二叉树结点类型
struct node {
datatype data; //结点数据
pointer lchild,rchild; //左右孩子结点
};
typedef pointer bitree; //定义二叉树类型



const int maxsize=100;
pointer Q[maxsize+1];
bitree level_creat() //由层次序列建立二叉树,返回根指针
{
char ch;
int front,rear;
pointer root,s;
root=NULL; //置空二叉树
front=rear=0; //置空队列
while(cin>>ch,ch!='#')
{
if(ch!='@') //非虚结点,建立新结点
{
s=new node;
s->data=ch;
s->lchild=s->rchild=NULL;
}
else s=NULL;
rear++;
Q[rear]=s; //不管结点是否为虚都要入队
if(rear==1) { root=s; front=1; } //第一个点是根,要修改头指针,他不是孩子
else if(s && Q[front]) //孩子和双亲都不是虚结点
if(rear%2==0) Q[front]->lchild=s; // rear是偶数,新结点是左孩子
else
{
Q[front]->rchild=s; //rear 是奇数,新结点是右孩子
front++;
}
}
return root;
}


void exchange(bitree t)
{
pointer p;
if(t==NULL) return; //空树,直接返回
p=t->lchild; t->lchild=t->rchild; t->rchild=p; //交换
exchange(t->rchild); //遍历原左子树
exchange(t->lchild); //遍历原右子树
}



void preorder(bitree t) //先根遍历
{
if(t==NULL) return;
cout<<t->data<<" "; //先访问跟
preorder(t->lchild); //先根遍历左子树
preorder(t->rchild); //先根遍历右子树
}


void main()
{
bitree T=NULL; int ch;
cout<<"首先层次遍历序列生成二叉树,请输入结点数据(输入'@'为虚结点,输入'#'结束):\n";
T=level_creat();
if(T==NULL) cout<<"二叉树生成失败!\n";
else cout<<"二叉树生成成功!\n";
AA: do{
cout<<" ----------------------菜单--------------------\n"
<<" 0.退出\n"
<<" 1.重新建立二叉树\n"
<<" 2.交换左右子数\n"
<<" 3.先根遍历二叉树\n"
<<" 请选择:\n"
<<" ----------------------------------------------\n";
cin>>ch;
switch(ch)
{
case 0: break;
case 1: T=level_creat(); cout<<"二叉树生成成功!\n"; break;
case 2: exchange(T); cout<<" 交换成功!\n"; break;
case 3: preorder(T); cout<<endl; break;
default: cout<<"您输入错误!请重新输入"; goto AA;
}
}while(ch!=0);
}
附图:



我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
除草,除虫都很难除掉是怎么回事?
杭州林杰汽车修理服务有限公司在哪里啊,我有
单选题Thisistheschool_______hestudie
什么星座的男人有较严重的处女情结
怎样制作QQ头像
谁能给我个梦幻诛仙挤号器,无毒的谢谢
山地车横把问题,41和43的肩宽分别应选多长的
潺潺教诲的意思是什么,教诲之恩的诲什么意思
单选题中国文化博大精深,许多成语源于历史故
执信中学有附属中学吗?具体在哪里?
有没有可以延缓衰老的保养品啊?
星座大师…拜托告诉我怎么才能让魔羯爱上我!
扇贝柱是什么,裙边扇贝的清洗过程
春节的春联(连横批)
目前问问20级有几个人?
推荐资讯
求助鹿鼎记里(陈小春版)双儿假扮撒满太太跟
SP2DBFix 1.0.2 .mxp在那里下载???
对不起真的可以解释一切么?
---Would you please help me get this job w
重庆邮电大学移通学院书画院地址在哪,我要去
足球里的一首非常凄凉的歌
肚子痛还呕吐了,该怎么办?
避孕药超出72小时还能吃吗
求galgame真剑恋的下载地址或种子。
西南沈庄地址在哪,我要去那里办事
勒身份证嗯是恼火得很
得资剥在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?