开发者社区> 问答> 正文

二叉树遍历的递归算法(C程序,先序中序或后序)

二叉树遍历的递归算法(C程序,先序中序或后序)

展开
收起
知与谁同 2018-07-19 19:21:10 1868 0
2 条回答
写回答
取消 提交回答
  • 那个 答案我用了不行 啊,报错后改了运行没结果
    2019-07-17 22:55:47
    赞同 展开评论 打赏
  • //***********************************************************
    //头文件
    #include<stdio.h>
    #include<stdlib.h>
    //***********************************************************
    //宏定义
    #define OK 1
    #define ERROR 0
    #define OVERFLOW 0

    //***********************************************************

    typedef struct BiTNode{
    //二叉树二叉链表存储结构
    char data;
    struct BiTNode *lChild,*rChild;
    }BiTNode,*BiTree;
    //***********************************************************
    int CreateBiTree(BiTree &T){
    //按先序次序输入二叉中树结点的值,空格表示空树
    //构造二叉链表表示的二叉树T
    char ch;
    fflush(stdin);
    scanf("%c",&ch);
    if(ch==' ')T=NULL;
    else{
    if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
    return(OVERFLOW);
    T->data=ch;
    CreateBiTree(T->lChild);
    CreateBiTree(T->rChild);
    }
    return(OK);
    }
    //*********************************************************
    void PreOrderTraverse(BiTree T){
    //采用二叉链表存储结构,先序遍历二叉树的递归算法
    if(T){
    printf("%c",T->data);
    PreOrderTraverse(T->lChild);
    PreOrderTraverse(T->rChild);
    }
    }
    /***********************************************************
    void InOrderTraverse(BiTree T){
    //采用二叉链表存储结构,中序遍历二叉树的递归算法
    if(T){
    InOrderTraverse(T->lChild);
    printf("%c",T->data);
    InOrderTraverse(T->rChild);
    }
    }*/
    //***********************************************************
    void PostOrderTraverse(BiTree T){
    //采用二叉链表存储结构,后序遍历二叉树的递归算法
    if(T){
    PostOrderTraverse(T->lChild);
    PostOrderTraverse(T->rChild);
    printf("%c",T->data);
    }
    }

    //***********************************************************
    void main(){
    //主函数分别实现建立并输出先、中、后序遍历二叉树
    BiTNode *Tree;
    CreateBiTree(Tree);
    printf("\n先序遍历二叉树:");
    PreOrderTraverse(Tree);
    printf("\n中序遍历二叉树:");
    InOrderTraverse(Tree);
    printf("\n后序遍历二叉树:");
    PostOrderTraverse(Tree);
    printf("\n该二叉树的节点个数:%d",BiTreeCount(Tree));
    }
    2019-07-17 22:55:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载