前序建立二叉树,三种遍历方式,及测试

#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;
}