我的没有输出
#include <stdio.h>
#include <malloc.h>
typedef struct Tree
{
char data;
struct Tree* lchild;
struct Tree* rchild;
}Tree,*BiTree;
typedef struct
{
int top;
BiTree data;
}Stack,*Seqstack;
Seqstack Initstack()
{
Seqstack s = (Seqstack)malloc(sizeof(Stack));
if(s==NULL) return 0;
else
{
s->top = -1;
}
return s;
}
void Push(Seqstack s,Tree p)
{
s->top++;
s->data[s->top] = p;
}
int IsEmpty(Seqstack s)
{
if(s->top ==-1) return 1;
else return 0;
}
void Pop(Seqstack s,BiTree p)
{
if(s->top == -1) return;
*p = s->data[s->top];
s->top--;
}
BiTree Create()
{
BiTree T;
char data;
data = getchar();
if(data == '#') T = NULL;
else
{
T = (BiTree)malloc(sizeof(Tree));
T->data = data;
T->lchild = Create();
T->rchild = Create();
}
return T;
}
void Preorder(BiTree T)
{
Seqstack s;
BiTree p = T;
s = Initstack();
while (p != NULL && !IsEmpty(s))
{
while(p!=NULL)
{
printf("%c",p->data);
Push(s,*p);
p = p->lchild;
}
if(!IsEmpty(s))
{
Pop(s,p);
p = p->rchild;
}
}
}
void Inorder(BiTree T)
{
Seqstack s;
BiTree p;
p = T;
s = Initstack();
while (p != NULL && !IsEmpty(s))
{
while (p!=NULL)
{
Push(s,*p);
p = p->lchild;
}
if(!IsEmpty(s))
{
Pop(s,p);
printf("%c",p->data);
p = p->rchild;
}
}
}
int main()
{
BiTree T = Create();
Preorder(T);
printf("\n");
Inorder(T);
return 0;
}