帮忙看看怎么 二叉树先序遍历 为什么运行后没有结果
#include "stdafx.h"
#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define SIS 100
#define SIE 10
typedef struct bitnode
{
char data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
typedef struct
{
bitree *base;
bitree *top;
int stacksize;
}sqstack;
void Initstack(sqstack &s)
{
s.base=(bitree*)malloc(SIS*sizeof(bitree));
s.top=s.base;
s.stacksize=SIS;
}
int GetTop(sqstack s,bitree &e)
{
if( e=*(s.top-1)) return 0;
else return 1;
}
void Push(sqstack &s,bitree &e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=s.base+s.stacksize;
s.stacksize+=SIE;
}
*s.top++=e;
}
void Pop(sqstack &s,bitree &e)
{
e=*--s.top;
}
int StackEmpty(sqstack s)
{
if(s.top=s.base)
return 0;
else return 1;
}
/*void Visit(char e)
{
printf("%c",e);
}*/
void PreOrderTraverse(bitree bt)
{ sqstack s;bitree p;
if(bt)
Initstack(s); Push(s,bt);
while(!StackEmpty(s))
{
while(GetTop(s,p)&&p)
{
printf("%c",p->data);/*Visit(p->data);*/
Push(s,p);
}
Pop(s,p);
if(!StackEmpty(s))
{
Pop(s,p);
Push(s,p->rchild);
}
}
}
void CreateBiTree(bitree &bt)
{char ch;
ch=getchar();
if(ch==' ') bt=NULL;
else
{
bt=(bitnode*)malloc(sizeof(bitnode));
bt->data=ch;
CreateBiTree(bt->lchild);
CreateBiTree(bt->rchild);
}
}
void main()
{bitree bt;
CreateBiTree(bt);
PreOrderTraverse(bt);
}