#include<stdlib.h> typedef struct node
{
int data;
struct node*lchild;
struct node*rchild;
}BiTree;
//生成树
BiTree* CreateTree(BiTree* root, int x){
if(!root){
root = (BiTree*)malloc(sizeof(BiTree));
root->data = x;
root->lchild = root->rchild = NULL;
}else{
if(root->data>x){
root->rchild = CreateTree(root->rchild, x);
}else{
root->lchild = CreateTree(root->lchild, x);
}
}
return root;
}
//先序遍历
void Preorder(BiTree*root){
if(root){
printf("%3d ",root->data);
Preorder(root->lchild);
Preorder(root->rchild);
}
}
//中序遍历
void Inorder(BiTree*root){
if(root){
Inorder(root->lchild);
printf("%3d ",root->data);
Inorder(root->rchild);
}
}
//后续遍历
void Porder(BiTree*root){
if(root){
Porder(root->lchild);
Porder(root->rchild);
printf("%3d ",root->data);
}
} //主函数
int main (void){
BiTree* root = NULL;
int x; //当前值
int n; //结点的个数
int i; //循环变量
printf("请输入n=");
scanf("%d",&n);
printf("请输入二叉树的结点\n");
for(i=0;i<n;i++)
{
scanf("%d",&x);
root = CreateTree(root,x);
}
printf("\n先序遍历为:");
Preorder(root);
printf("\n中序遍历为:");
Inorder(root);
printf("\n后序遍历为:");
Porder(root);
printf("\n");
}