#include"stdio.h"
#include"malloc.h"
typedef struct BiTNode{
char data; //根结点
struct BiTNode *lchild,*rchild;//左右孩子指针
}BiTNode,*BiTree;
char *ch="ABC##DE#G##F###";
int i=0;
int CreateBiTree(BiTree &T){ //先序构造树
if(ch[i]=='#'){ T=NULL; i++;}
else
{
T=(BiTree)malloc(sizeof(BiTNode));//生成新结点
if(!T) return -1; //分配失败
T->data=ch[i++]; //生成根结点
CreateBiTree(T->lchild);//构造左子树
CreateBiTree(T->rchild);//构造右子树
}
return 1;
}
void Preorder(BiTree T){ //中序遍历树
if(T->lchild) Preorder(T->lchild); //遍历左子树
if(T->data) printf("%c",T->data);
if(T->rchild) Preorder(T->rchild); //遍历右子树
}
void main(){
BiTree T;
CreateBiTree(T);
Preorder(T);
}