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;

    }

  • 相关阅读:
    使用crontab定时执行脚本时别忘了输出重定向>
    php 中函数获取可变参数的方法, 这个语法有点像 golang 语言中的
    单词number 和 numeral 的区别
    vim 调到闭合的{
    [转]文件IO详解(二)---文件描述符(fd)和inode号的关系
    js中有包装类,java中也有包装类
    cin中函数的作用
    string类小结
    结构、位域、联合、枚举之小小总结
    运算符重载(C++)
  • 原文地址:https://www.cnblogs.com/zhahu/p/11931431.html
Copyright © 2011-2022 走看看