二叉树二叉树虐我千万遍劳资今天终于搞明白了哈哈哈哈哈

来源:互联网 发布:百度语音软件 编辑:程序博客网 时间:2024/04/28 08:49
#include <stdio.h>#include <stdlib.h>typedef char TElmType;typedef struct BiNode{    TElmType data;    struct BiNode *lchild,*rchild;}BiTNode,*BiTree;void CreateBiTree(BiTree *T){    TElmType ch;    scanf("%c",&ch);    if (ch=='#') {        *T=NULL;    }    else{        *T=(BiTree)malloc(sizeof(BiTNode));        (*T)->data=ch;        CreateBiTree(&((*T)->lchild));        CreateBiTree(&((*T)->rchild));    }}void ProTraverse(BiTree *T){    if(*T){        printf("%c",(*T)->data);        ProTraverse(&((*T)->lchild));        ProTraverse(&((*T)->rchild));    }}void InTraverse(BiTree *T){    if(*T){        InTraverse(&((*T)->lchild));        printf("%c",(*T)->data);        InTraverse(&((*T)->rchild));    }}void PostTraverse(BiTree *T){    if(*T){        PostTraverse(&((*T)->lchild));        PostTraverse(&((*T)->rchild));        printf("%c",(*T)->data);    }}void DestroyBiTree(BiTree *T){    if (*T) {        if ((*T)->lchild)         DestroyBiTree(&((*T)->lchild));        if ((*T)->rchild)         DestroyBiTree(&((*T)->rchild));        free(*T);        *T=NULL;    }}int IsEmptyTree(BiTree *T){    if ((*T)==NULL) {        return 0;    }    else        return 1;}int main(){    BiTree T;    printf("按照前序遍历的方法输入一棵树:\n");    CreateBiTree(&T);    printf("前序遍历:\n");    ProTraverse(&T);    printf("\n");    printf("中序遍历:\n");    InTraverse(&T);    printf("\n");    printf("后序遍历:\n");    PostTraverse(&T);    printf("\n");    printf("销毁前:\n");    int status=IsEmptyTree(&T);    if (status) {        printf("Not Empty\n");    }    else        printf("Empty\n");    printf("销毁后:\n");    DestroyBiTree(&T);    status=IsEmptyTree(&T);    if (status) {        printf("Not Empty\n");    }    else        printf("Empty\n");    return 0;}
0 0
原创粉丝点击