#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct TREE
{
ElemType data;
struct TREE *left;
struct TREE *right;
}Tree;
/*createtree*//*创建二叉树或向二叉树插入函数*/
Tree *createtree(Tree *tree, ElemType key)
{
Tree *p=tree,*q;
Tree *temp;
temp=(Tree *)malloc(sizeof(Tree));
temp->data=key;
temp->left=NULL;
temp->right=NULL;
/
while(tree!=NULL)
{
if(key<tree->data)
{
q=tree;
tree=tree->left; //
} //向二叉树插入值
else //
{ //
q=tree; //
tree=tree->right; //
}
}
if(p!=NULL)
{
tree=q;
if(key<tree->data)
tree->left=temp;
else
tree->right=temp;
tree=p;
}
else
tree=temp; //创建二叉树
return tree;
}
//*前序遍历*///
void preorder(Tree *tree)
{
if(tree!=NULL)
{
printf("%d, ",tree->data);
preorder(tree->left);
preorder(tree->right);
}
return;
}
//*中序遍历*///
void inorder(Tree *tree)
{
if(tree!=NULL)
{
inorder(tree->left);
printf("%d, ",tree->data);
inorder(tree->right);
}
return;
}
//*后序遍历*///
void postorder(Tree *tree)
{
if(tree!=NULL)
{
postorder(tree->left);
postorder(tree->right);
printf("%d, ",tree->data);
}
return;
}
int main()
{
int i;
ElemType key;
Tree *tree=NULL;
while(1)
{
i=scanf("%d",&key);
if(i!=1)
break;
tree=createtree(tree,key);
}
preorder(tree);
printf("/n");
inorder(tree);
printf("/n");
postorder(tree);
printf("/n");
}