二叉树的C语言实现,BiTree C implement

二叉树结构图:
这里写图片描述

C源代码

#include<stdio.h>
#include<stdlib.h>

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

static int i=0;
//char TDATA[]={'0','1','2','3','4','5','6','7','8','9',' ','9','8','7','6','5','4','3','2','1','0',' '};
char TDATA[]={'0','1','2','#','#','3','#','#','4','5','6','#','#','7','#','#','8','9',' ',' ','a','#','#'};


void preOrder(BiTree *T)
{
        if(T == NULL)
        {
                return;
        }
        printf("%c ", T->data);
        preOrder(T->lchild);
        preOrder(T->rchild);
}


void inOrder(BiTree *T)
{
        if(T == NULL)
        {
                return;
        }
        inOrder(T->lchild);
        printf("%c ", T->data);
        inOrder(T->rchild);
}


void postOrder(BiTree *T)
{
        if(T == NULL)
        {
                return;
        }
        postOrder(T->lchild);
        postOrder(T->rchild);
        printf("%c ", T->data);
}

void createBiTree(BiTree **T){
        char e;
        e=TDATA[i++];
        printf("i=%d,e=%d,e=%c\n",i,e,e);

        if(i>100)
            e=' ';
        if(e == ' ' || e=='#')
        {
            *T = NULL;
        }
        else
        {
            *T = (BiTree *)malloc(sizeof(BiTNode));
            if(!(*T))
            {
                printf("Failed memory malloc for node\n");
                return;
            }
            (*T)->data = e;
            createBiTree(&(*T)->lchild);
            createBiTree(&(*T)->rchild);
    }
}


int main(void){
    BiTree *T;
    createBiTree(&T);
    printf("Create Binary Tree OK!\n");
    printf(" preOrder:");
    preOrder(T);
    printf("\n  InOrder:");
    inOrder(T);
    printf("\npostOrder:");
    postOrder(T);

    while(1);

}

运行结果:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/ambercctv/article/details/79915463