// äºåæ çå
åºéååºå: E A C B D G F
// äºåæ çä¸åºéååºå: A B C D E G F
// äºåæ çååºéååºå: B D C A F G E
#include "stdio.h"
#include "stdlib.h"
struct tree
{
char data;
struct tree *left;
struct tree *right;
};
typedef struct tree treenode;
typedef treenode *btree;
btree createbtree(char *data,int pos,int maxPos) //éå½å建æ³
{
btree newnode;
if(data[pos]==0 || pos>maxPos)
{
return NULL;
}
else
{
newnode=(btree)malloc(sizeof(treenode));
newnode->data=data[pos];
newnode->left=createbtree(data,2*pos,maxPos);
newnode->right=createbtree(data,2*pos+1,maxPos);
return newnode;
}
}
void inorder(btree ptr)
{
if(ptr!=NULL)
{
inorder(ptr->left);
printf("%C ",ptr->data);
inorder(ptr->right);
}
}
void preorder(btree ptr)
{
if(ptr!=NULL)
{
printf("%C ",ptr->data);
preorder(ptr->left);
preorder(ptr->right);
}
}
void postorder(btree ptr)
{
if(ptr!=NULL)
{
postorder(ptr->left);
postorder(ptr->right);
printf("%C ",ptr->data);
}
}
int main()
{
btree root=NULL;
int i;
char data[16]={0,'E','A','G',0,'C',0,'F',0,0,'B','D',0,0,0,0};
root=createbtree(data,1,15);
printf("äºåæ ç顺åºåå¨å
容: ");
for(i=1;i<16;i++)
{
if(data[i]==0)
{
printf("^ ");
}
else
{
printf("%C ",data[i]);
}
}
printf("\näºåæ çå
åºéååºå: ");
preorder(root);
printf("\näºåæ çä¸åºéååºå: ");
inorder(root);
printf("\näºåæ çååºéååºå: ");
postorder(root);
printf("\n");
return 0;
}