二叉树--递归实现

#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\n",iRes);
    printf("\n*********preOrderDisplay*********\n");
    preOrderDisplay(&t);
    printf("\n*********inOrderDisplay**********\n");
    inOrderDisplay(&t);
    printf("\n*********afterOrderDisplay*******\n");
    afterOrderDisplay(&t);
    return 1;
}

 

posted @ 2016-01-26 22:16  第九剑  阅读(248)  评论(0编辑  收藏  举报