永发信息网

先序中序建立二叉树

答案:1  悬赏:20  手机版
解决时间 2021-03-28 02:41
先序中序建立二叉树
最佳答案
#include
#include
#define size 100
typedef struct node//定义结点
{
char data;
struct node *lchild,*rchild;
} JD,*BitTree;
int search(char ino[],char pre)//在中序序列中查找先序中该元素所在位置
{
int i=0;
while(ino[i]!=pre&&ino[i])
i++;
if(ino[i]==pre)
return i;
else
return -1;
}
void CrtBT(BitTree &T,char pre[],char ino[],int ps,int is,int n)
{
int k;
if(n==0)
T=NULL;
else
{
k=search(ino,pre[ps]);
if(k==-1)
puts("error!");
else
{
T=(JD*)malloc(sizeof(JD));
T->data=pre[ps];
if(k==is)
T->lchild=NULL;
else
CrtBT(T->lchild,pre,ino,ps+1,is,k-is);
if(k==is+n-1)
T->rchild=NULL;
else
CrtBT(T->rchild,pre,ino,ps+1+(k-is),k+1,n-(k-is)-1);
}
}
}
//先序遍历
void PreOrder(BitTree T)
{
if(T)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
//中序遍历
void InOrder(BitTree T)
{
if(T)
{
InOrder(T->lchild);
printf("%c",T->data);
InOrder(T->rchild);
}
}

//后序遍历(左->右->根),
int PostOrder(BitTree T)
{
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
else
return 1;
}
void main()
{
char pre[size],ino[size];
puts("输入先序序列:");
gets(pre);
puts("输入中序序列:");
gets(ino);
BitTree T=NULL;
CrtBT(T,pre,ino,0,0,7);
printf("先序遍历的二叉树:");
PreOrder(T);
printf("\n");
printf("中序遍历的二叉树:");
InOrder(T);
printf("\n");
printf("后序遍历的二叉树:");
PostOrder(T);
printf("\n");
}

调试过的
有问题留言
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
烧伤是怎样定轻重伤
211 985大学 GPA3.48(学校不给删课) 中文英
汪译男出生年月日
电脑的ATI和AMD是什么意思啊?有什么区别?
手臂发酸有一股酸劲往心里纠纠的心里发慌是怎
男的都是广撒鱼 网吗?
为了方便施工搭建的临时钢结构顶棚需要新建科
蜀一蜀二地址在哪,我要去那里办事
地推推什么容易让人接受呢
微信退不出去了,一退就写设置失败4,34咋回
潼心宾馆地址在什么地方,想过去办事,
I'm agree with you 和I agree with you
安卓的cs1.6怎么开启第三人称
《传奇》传送戒指怎么用?
c语言中$符号的作用是什么?
推荐资讯
其实去哪个单位都有苦有累
你的行李有多重?这句话用英语怎么说?
求一本小说,相亲失败,因为他开的车不好
求写梅雨季节雨多又大的天气
w7电脑任务栏应该在底下才对,现在到左边竖着
小胸怎么选胸罩
谁知道中国东南西北四个大佛是什么?在哪?
我想找一个多年失去联系的好朋友怎么找?
好感跟喜欢跟爱的有什么区别?
三菱plc的负数传到mcgs里显示正数
comprehensible comprehensive 怎么记?
一个男生说我比你自己还了解你自己是什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?