zoukankan      html  css  js  c++  java
  • 二叉树的创建和遍历

    #include<stdio.h>

    #include<stdlib.h>

    typedef char ElemType;

    typedef  struct BiTNode

    {

        ElemType data;

        struct BiTNode *lchild, *rchild;

    }BiTNode, *BiTree;

     

    //二叉树的建立,按前序遍历的方式建立二叉树

    void CreateBiTree(BiTree &T)

    {

        ElemType ch;

        scanf("%c",&ch);

        if (ch == '#')

            T = NULL;

        else

        {

            T = (BiTree)malloc(sizeof(BiTNode));

            T->data = ch;//生成结点

            CreateBiTree(T->lchild);//构造左子树

            CreateBiTree(T->rchild);//构造右子树   

        }

    }

    //表示对遍历到的结点数据进行的处理操作,此处操作是将树结点前序遍历输出

    void operation1(ElemType ch)

    {

       printf("%c",ch);

    }

    //递归方式前序遍历二叉树

    void PreOrderTraverse(BiTree T)

    {

        if (T == NULL){

           return;

       }      

        operation1(T->data);

        PreOrderTraverse(T->lchild);

        PreOrderTraverse(T->rchild);

    }

     

    //递归方式中序遍历二叉树

    void InOrderTraverse(BiTree T)

    {

       if(T==NULL){

          return;

       }   

       InOrderTraverse(T->lchild);

       operation1(T->data);

       InOrderTraverse(T->rchild);

    }

     

    //递归方式后序遍历二叉树

    void PostOrderTraverse(BiTree T)

    {

       if(T==NULL){

          return;

       }

       PostOrderTraverse(T->lchild);

       PostOrderTraverse(T->rchild);

       operation1(T->data);

    }

    int main()

    {

        BiTree T;

       

        printf(" 请以前序遍历的方式输入扩展二叉树:(类似输入AB#D##C##)");

        CreateBiTree(T);// 建立二叉树,没有树,怎么遍历

     

        printf("递归前序遍历输出为:");

        PreOrderTraverse(T);//进行前序遍历

        printf(" ");

     

        printf("归中序遍历输出为:");

        InOrderTraverse(T);

        printf(" ");

     

        printf("递归后序遍历输出为:");

        PostOrderTraverse(T);

        printf(" ");

        return 0;

    }

    #include<stdio.h>

    #include<stdlib.h>

     

    typedef char ElemType;

     

    typedef  struct BiTNode

    {

        ElemType data;

        struct BiTNode *lchild, *rchild;

    }BiTNode, *BiTree;

     

    //二叉树的建立,按前序遍历的方式建立二叉树

    void CreateBiTree(BiTree &T)

    {

        ElemType ch;

        scanf("%c",&ch);

        if (ch == '#')

            T = NULL;

        else

        {

            T = (BiTree)malloc(sizeof(BiTNode));

            T->data = ch;//生成结点

            CreateBiTree(T->lchild);//构造左子树

            CreateBiTree(T->rchild);//构造右子树   

        }

    }

    //表示对遍历到的结点数据进行的处理操作,此处操作是将树结点前序遍历输出

    void operation1(ElemType ch)

    {

       printf("%c",ch);

    }

     

    //递归方式前序遍历二叉树

    void PreOrderTraverse(BiTree T)

    {

        if (T == NULL){

           return;

       }      

        operation1(T->data);

        PreOrderTraverse(T->lchild);

        PreOrderTraverse(T->rchild);

    }

     

    //递归方式中序遍历二叉树

    void InOrderTraverse(BiTree T)

    {

       if(T==NULL){

          return;

       }

        

         

       InOrderTraverse(T->lchild);

       operation1(T->data);

       InOrderTraverse(T->rchild);

    }

     

    //递归方式后序遍历二叉树

    void PostOrderTraverse(BiTree T)

    {

       if(T==NULL){

          return;

       }

       PostOrderTraverse(T->lchild);

       PostOrderTraverse(T->rchild);

       operation1(T->data);

    }

    int main()

    {

        BiTree T;

       

        printf(" 请以前序遍历的方式输入扩展二叉树:(类似输入AB#D#C#)");

        CreateBiTree(T);// 建立二叉树

     

        printf("递归前序遍历输出为:");

        PreOrderTraverse(T);//进行前序遍历

        printf(" ");

     

        printf("归中序遍历输出为:");

        InOrderTraverse(T);

        printf(" ");

     

        printf("递归后序遍历输出为:");

        PostOrderTraverse(T);

        printf(" ");

        return 0;

    }

  • 相关阅读:
    ARCGIS JAVASCRIPT API (3.2)部署
    WINFORM 只能运行一个实例问题
    iOS 版本号
    同步和异步的区别
    简单的手机号判断
    "_inflateEnd", referenced from "_inflateInit_"等。这时需要在工程中加入libz.dlib 文件
    iOS 实现打电话
    assign retain copy iOS
    iOS 长按事件 UILongPressGestureRecognizer
    UITableView 滑动删除
  • 原文地址:https://www.cnblogs.com/zhahu/p/11931431.html
Copyright © 2011-2022 走看看