大牛帮小弟看看
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct BTREE
{
char data;
struct BTREE *lchild,*rchild;
}BTREE;
BTREE* stack[100];
BTREE *creat()
{
BTREE *T;
char ch;
ch=getchar();
if(ch=='#')
T=NULL;
else
{
T=(BTREE *)malloc(sizeof(BTREE));
T->data=ch;
T->lchild=creat();
T->rchild=creat();
}
return T;
}
void inorder(BTREE *T)
{
int i=-1;
for(;;)
{
while(T!=NULL)
{
i++;
stack[i]=T;
T=T->lchild;
}
if(i!=-1)
{
T=stack[i];
i--;
printf("%c",T->data);
T=T->rchild;
}
else
return ;
}
}
void porder(BTREE *T)//先序怎么输不出来啊
{
int i=-1;
while(1)
{
while(!T)
{
printf("%c",T->data);
if(!T->rchild)
stack[++i]=T->rchild;
T=T->lchild;
}
if(i!=-1)
{
T=stack[i];
i--;
}
else
return;
}
}
int main()
{
BTREE *T;
T=creat();
inorder(T);
putchar('\n');
porder(T);
return 0;
}
//测试数据124#8##59###36##7##