二叉树--递归实现

#include<stdio.h>
#include<stdlib.h>
#define ElemType int

typedef struct BiTNode{
    ElemType data;
    struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;

int CreateBiTree(BiTree* t)
{
    char ch;
    scanf("%c",&ch);
    if(ch==' ')
        (*t)=NULL;
    else
    {
        (*t) = (BiTNode*)malloc(sizeof(BiTNode));
        if(!(*t))
            return 0;
        (*t)->data = ch;
        CreateBiTree(&(*t)->lchild);
        CreateBiTree(&(*t)->rchild);
    }

    return 1;
}

void preOrderDisplay(const BiTree* t)
{
    if((*t)==NULL)
        return;
    printf("%c",(*t)->data);
    preOrderDisplay(&(*t)->lchild);
    preOrderDisplay(&(*t)->rchild);
}

void inOrderDisplay(const BiTree* t)
{
    if((*t)==NULL)
        return;
    inOrderDisplay(&(*t)->lchild);
    printf("%c",(*t)->data);
    inOrderDisplay(&(*t)->rchild);
}

void afterOrderDisplay(const BiTree* t)
{
    if((*t)==NULL)
        return;
    afterOrderDisplay(&(*t)->lchild);
    afterOrderDisplay(&(*t)->rchild);
    printf("%c",(*t)->data);
}

int main()
{
    BiTree t;
    int iRes = CreateBiTree(&t);
    printf("******the returned result : %d
",iRes);
    printf("
*********preOrderDisplay*********
");
    preOrderDisplay(&t);
    printf("
*********inOrderDisplay**********
");
    inOrderDisplay(&t);
    printf("
*********afterOrderDisplay*******
");
    afterOrderDisplay(&t);
    return 1;
}
原文地址:https://www.cnblogs.com/luoyaqi/p/5161786.html