中易网

求助:设二叉树结点值为大写字母,输入二叉树的前序遍历和中序遍历序列,生成此二叉树

答案:1  悬赏:10  
解决时间 2021-03-01 05:30
输出该二叉树的后序遍历和按层次遍历序列。输入某结点值,在二叉树中查找该结点,若该结点存在,则输出从根到该结点的路径,否则给出不存在信息。
重点是后面啦,查找和路径。最好给出完整代码,谢啦~
急求正解啊!!
最佳答案
#include<iostream.h>
#include<malloc.h>

#define FALSE 0
#define TRUE 1
#define OK 1
#define maxsize 100
typedef int status;
typedef int elemtype;

typedef struct binode
{
elemtype data;
struct binode *lchild,*rchild;
}binode,*bitree;

status treecreated=FALSE;

status createbitree(bitree *t);
status preordertraverse(bitree t); //前序
status inordertraverse(bitree t); //中序
status postordertraverse(bitree t); //后序

void main()
{
int choice=0;
status leave=FALSE,flag;
binode *bt;
cout<<"===========二叉树演示程序==============="<<endl;
do
{
cout<<"1:创建一个二叉树,按先序遍历结果输入,空用0表示 "<<endl;
cout<<"2:先序遍历二叉树,递归方式遍历二叉树 "<<endl;
cout<<"3:中序遍历二叉树,递归方式遍历二叉树"<<endl;
cout<<"4:后序遍历二叉树,递归方式遍历二叉树"<<endl;
cout<<"0:退出"<<endl;
cout<<"-------请输入你的选择:"<<endl;
cin>>choice;
switch(choice)
{
case 1:
if(treecreated)
{
cout<<"sorry,the tree has been already created!"<<endl;
break;
}
cout<<"请输入代表树的数字:"<<endl;
flag=createbitree(&bt);
if(flag==OK)
{
cout<<"你已经建立了一棵树了!"<<endl;
treecreated=TRUE;
}
break;

case 2:
if(!treecreated)
{
cout<<"sorry,you must create a tree for further steps!"<<endl;
break;
}
cout<<"先序遍历顺序:"<<endl;
preordertraverse(bt);
cout<<endl;
break;

case 3:
if(!treecreated)
{
cout<<"sorry,you must create a tree for further steps!"<<endl;
break;
}
cout<<"中序遍历顺序:"<<endl;
inordertraverse(bt);
cout<<endl;
break;

case 4:
if(!treecreated)
{
cout<<"sorry,you must create a tree for further steps!"<<endl;
break;
}
cout<<"后序遍历顺序:"<<endl;
postordertraverse(bt);
cout<<endl;
break;

case 0:
leave=TRUE;
break;
}
}while(!leave);
cout<<"thank for using, bye-bye!"<<endl;
}
//递归方法实现创建
status createbitree(bitree *t)
{
int ch=0;
cin>>ch;
if(ch==0)
(*t)=NULL;
else
{
(*t)=(bitree)malloc(sizeof(binode));
(*t)->data=ch;
createbitree(&(*t)->lchild);
createbitree(&(*t)->rchild);
}
return OK;
}
//递归方法实现先序遍历
status preordertraverse(bitree t)
{
if(t)
{
cout<<t->data<<" ";
preordertraverse(t->lchild);
preordertraverse(t->rchild);
return OK;
}
else
return FALSE;
}
//递归方法实现中序遍历
status inordertraverse(bitree t)
{
if(t!=NULL)
{
inordertraverse(t->lchild);
cout<<t->data<<" ";
inordertraverse(t->rchild);
return OK;
}
else
return FALSE;
}

//递归方法实现后序遍历
status postordertraverse(bitree t)
{
if(t)
{
postordertraverse(t->lchild);
postordertraverse(t->rchild);
cout<<t->data<<" ";
return OK;
}
else
return FALSE;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
保险投资比例应占到总家庭收入的多少最为恰当
[除掉阿鲁高]这是多少级任务
武穴市供电公司物资配送中心在什么地方啊,我
求一套农村自建房施工图纸 进深八米开间十一
山西虎记铁锅刀削面这个地址在什么地方,我要
c语言输入什么就输出什么
XP系统怎么切换用户?
我的卡流量快用完了。。。附加包也订了8次,
驾图盒子橙色灯一直闪烁
胶水怎么发快递
1点心蛋糕店在什么地方啊,我要过去处理事情
男孩带了女朋友回家吃饭,他妈妈默默看着女孩
非会计专业学生可以报考广东省的会计从业考试
金凤二路/金凤西路(路口)地址在哪,我要去那
扶持谁?谁来扶?怎么扶
推荐资讯
龙兴五金交电我想知道这个在什么地方
结婚西服是买划算还是定制划算,回门的要几套
oracle ,sybase, db2 数据库中创建的唯一索引
湖北职业技术学院和鄂州职业大学哪个好?
情订巴黎婚纱摄影地址在哪,我要去那里办事
刚大学毕业,结果被要求去学挖机,到底要不要
广州电影院有和商家联合促销电影票打折么
塑料碗可以同糖一起进微波炉吗
小金刚用钢丝刷刷,不会留下划痕么?
二,关于计算:已知地球平均半径为6371千米,
一点便利地址在哪,我要去那里办事
华邦门业我想知道这个在什么地方
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?