二叉树的前序序列和中序序列可以唯一确定一棵二叉树。要求:先输入前序序列(按回车),再输入中序序列(按回车),得到的是一棵画出来的二叉树(或者得到的是 “正确”。)
希望各位高手能帮帮忙啊。
[此贴子已经被作者于2005-12-1 16:56:12编辑过]
不能得到我要的结果,我也知道有问题,但是就不知道该怎么做了,希望有人给我指点指点。
我想要的结果是: 输入先序和中序后,得到“OK”。
或者是: 输入先序和中序后,能够把这棵树在屏幕上显示出来。
如 :输入abc和bac得到
a
b c
#include <stdlib.h>
#include <stdio.h>
#define MAX 100
struct tree
{char data;
struct tree *lchild;
struct tree *rchild;
};
typedef struct tree bitree;
char pre[MAX],ind[MAX];
bitree *creat(int i,int m,int j,int n)
{
bitree *t;int s;
if((m-i)!=(n-j)) printf("error001\n");
else{
t=(bitree*)malloc(sizeof(bitree));
t->data=pre[i];
s=j;
while((s<n)&&(pre[i]!=ind[s]))
s++;
if(ind[s]!=pre[i]) printf("error002\n");
else{
t->lchild=creat(i+1,i+s-j,j,s-1);
t->rchild=creat(i+s-j+1,m,s+1,n);
}
}
return t;
}
main()
{
int i,j,m,n;
bitree *t;
printf("please put pre[]:");
scanf("%s",pre);
m=strlen(pre);
printf("m=%d\n",m);
printf("please put ind[]:");
scanf("%s",ind);
n=strlen(ind);
printf("n=%d\n",n);
i=1;j=1;
creat(i,m,j,n);
}
[此贴子已经被作者于2005-12-6 17:07:34编辑过]