#include <stdlib.h>
#include <stdio.h>
#define ElemType char
typedef struct BiTNode *BiTree;
struct BiTNode{
ElemType data;
BiTree lchild,rchild;
};
typedef struct STACKnode* link;
struct STACKnode{
BiTree item ;
link next;
};
static link head ;
link NEW(BiTree item, link next){
link x = (link) malloc(sizeof *x);
x->item = item;
x->next = next;
return x;
}
void STACKinit(int maxN){
head = NULL;
}
int STACKempty(){
return head == NULL;
}
void STACKpush(BiTree item){
head = NEW(item,head);
}
BiTree STACKpop(){
BiTree item = head->item;
link t = head->next;
free(head);
head = t;
return item;
}
BiTree CreateBiTree(){
ElemType ch;
BiTree T;
scanf("%c",&ch);
if(ch=='#')T=NULL;
else{
T = (BiTree)malloc(sizeof *T);
T->data = ch;
T->lchild = CreateBiTree();
T->rchild = CreateBiTree();
}
return T;
}
void PreOrderTraverse(BiTree T){
STACKinit(10);
STACKpush(T);
while(!STACKempty()){
T = STACKpop();
printf("%c",T->data);
if(T->rchild != NULL)STACKpush(T->rchild);
if(T->lchild != NULL)STACKpush(T->lchild);
}
}
main(){
BiTree T;
T = CreateBiTree();
PreOrderTraverse(T);
// EDBA##C###HF#G###
}
运行结果