⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 binarytree.c

📁 这是我的一些数据结构(C语言)源代码 比如LinkList
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>

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

void CreateBiTree(BiTree *T){
    TElemType   ch;

    printf("Enter element(enter '#' node is empty):\n");
    ch = getchar();
    if(ch == '#') *T = NULL;
    else{
        *T = (BiTNode *)malloc(sizeof(BiTNode));
        if(!(*T)) exit(-1);
        (*T)->data = ch;
        CreateBiTree( &(*T)->lchild );
        CreateBiTree( &(*T)->rchild );
    }
} 

void DestroyBiTree(BiTree tree){
    //BiTree T;
    //T = tree;
    //if(tree->lchild) tree = tree->lchild;
    //else tree = tree->rchild;
    //free(T);
    printf("Free tree.\n");
    free(tree);
}
void Destroy(BiTree T){
    if(T){
        if(T->lchild)
            Destroy(T->lchild);
        if(T->rchild)
            Destroy(T->rchild);
        printf("Free tree.\n");
        free(T);  
    }
}
             
void PreOrderTraverse(BiTree T, void(* Visit)(BiTree Tree) ){
    if(T){
        Visit(T);
        PreOrderTraverse(T->lchild, Visit);
        PreOrderTraverse(T->rchild, Visit);
    }   
} 

void InOrderTraverse(BiTree T, void(* Visit)(BiTree Tree) ){
    if(T){
        PreOrderTraverse(T->lchild, Visit);
        Visit(T);
        PreOrderTraverse(T->rchild, Visit);
    }   
}

void PostOrderTraverse(BiTree T, void(* Visit)(BiTree Tree) ){
    if(T){
        PreOrderTraverse(T->lchild, Visit);
        PreOrderTraverse(T->rchild, Visit);
        Visit(T);
    }   
}
               
void PrintElement(BiTree T){
    printf("%3c", T->data);
} 
               
int main()
{
    BiTree tree1;

    printf("Create tree:\n");
    CreateBiTree(&tree1);

    printf("Pre Order Traverse tree:\n");
    PreOrderTraverse(tree1, PrintElement);
    
    printf("\nIn Order Traverse tree:\n");
    InOrderTraverse(tree1, PrintElement);
    
    printf("\nPost Order Traverse tree:\n");
    PostOrderTraverse(tree1, PrintElement);

    printf("\nDestroy tree:\n");
    //PostOrderTraverse(tree1, DestroyBiTree); 
    Destroy(tree1);   

    system("pause");
    return 0;
}    
        
            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -