前序建立二叉树,三种遍历方式,及测试
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *lchild,*rchild;
}NODE;
void create(NODE **T)
{
int tmp;
scanf("%d",&tmp);
if(tmp==0)
{
*T=NULL;
}
else
{
*T=(NODE*)malloc(sizeof(NODE));
(*T)->data=tmp;
create(&(*T)->lchild);
create(&(*T)->rchild);
}
}
///前序遍历
void preShow(NODE *T)
{
if(T==NULL)
{
return ;
}
printf("%d",T->data);
preShow(T->lchild);
preShow(T->rchild);
}
///中序遍历
void midShow(NODE *T)
{
if(T==NULL)
{
return ;
}
preShow(T->lchild);
printf("%d",T->data);
preShow(T->rchild);
}
///后序遍历
void lastShow(NODE *T)
{
if(T==NULL)
{
return ;
}
preShow(T->lchild);
preShow(T->rchild);
printf("%d",T->data);
}
int main()
{
NODE *tree=NULL;
create(&tree);
preShow(tree);
puts("");
midShow(tree);
puts("");
lastShow(tree);
puts("");
return 0;
}