• 数据结构(c语言版本) 二叉树的遍历


    要求

    实现二叉树的创建,并输入二叉树数据
    然后先序遍历输出二叉树、中序遍历输出二叉树、后序输出二叉树

    例如二叉树为:
    在这里插入图片描述
    该二叉树的先序遍历结果为:

    A B D C E F

    该二叉树的中序遍历结果为:

    B D A E C F

    该二叉树的后序遍历结果为:

    D B E F C A

    代码实现

    #include 
    #include 
    
    struct BiTNode{
        char data;
        struct BiTNode* LChild;     //左孩子结点
        struct BiTNode* RChild;     //右孩子结点
    };
    
    //先序序列输入结点的值,构造二叉链表
    void CreateBinTree(struct BiTNode **T){
        char ch;
        scanf("\n %c",&ch);
        if(ch=='0'){
            *T = NULL;
        } else{
            *T=(struct BiTNode *)malloc(sizeof(struct BiTNode));
            (*T)->data=ch;
            CreateBinTree(&(*T)->LChild);    //构建二叉树的左子树
            CreateBinTree(&(*T)->RChild);    //构建二叉树的右子树
        }
    }
    
    // 先序遍历输出二叉树的结点值
    void PreOrderOut(struct BiTNode *T){
        if(T){
            printf("%3c",T->data);      //访问结点的数据
            PreOrderOut(T->LChild);            //先序遍历二叉树的左子树
            PreOrderOut(T->RChild);            //先序遍历二叉树的右子树
        }
    }
    
    // 中序遍历输出二叉树的结点值
    void InOrderOut(struct BiTNode *T){
        if(T){
            InOrderOut(T->LChild);              //中序遍历二叉树的左子树
            printf("%3c",T->data);      //访问结点的数据
            InOrderOut(T->RChild);              //中序遍历二叉树的右子树
        }
    }
    
    // 后序遍历输出二叉树的结点值
    void PostOrderOut(struct BiTNode *T){
        if(T){
            PostOrderOut(T->LChild);             //后序遍历二叉树的左子树
            PostOrderOut(T->RChild);             //后序遍历二叉树的右子树
            printf("%3c",T->data);      //访问结点的数据
        }
    }
    
    
    int main(){
        struct BiTNode *Bt;
        printf("***************二叉树的输入操作***************\n");
        printf("请输入二叉树数据:");
        CreateBinTree(&Bt);
    
    
        printf("\n***************二叉树的先序遍历***************\n");
        printf("先序遍历结果:\n");
        PreOrderOut(Bt);
    
        printf("\n***************二叉树的中序遍历***************\n");
        printf("中序遍历结果:\n");
        InOrderOut(Bt);
    
        printf("\n***************二叉树的后序遍历***************\n");
        printf("后序遍历结果:\n");
        PostOrderOut(Bt);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    输入二叉树(以先序序列输入为例)的数据:

    A B 0 D 0 0 C E 0 0 F 0 0

    运行结果

    在这里插入图片描述

  • 相关阅读:
    Linux内核之堆溢出的利用
    Java 基本类型和包装类
    文件管理:目录管理
    24、Spring5
    docker安装eclipse-mosquitto MQTT并记录日志
    若依的放接口表单数据重复提交疑问
    Java版本spring cloud + spring boot企业电子招投标系统源代码
    vue2插件
    太极图形课——渲染——光线追踪实战第一部分呢
    AVL树的插入--旋转笔记
  • 原文地址:https://blog.csdn.net/MateSnake/article/details/134449002