• 二叉树的四种遍历


    函数接口定义:

    void InorderTraversal( BinTree BT );
    void PreorderTraversal( BinTree BT );
    void PostorderTraversal( BinTree BT );
    void LevelorderTraversal( BinTree BT );

    其中BinTree结构定义如下:

    typedef struct TNode *Position;
    typedef Position BinTree;
    struct TNode{
        ElementType Data;
        BinTree Left;
        BinTree Right;
    };

    要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。
    裁判测试程序样例:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef char ElementType;
    typedef struct TNode *Position;
    typedef Position BinTree;
    struct TNode{
        ElementType Data;
        BinTree Left;
        BinTree Right;
    };
    
    BinTree CreatBinTree(); /* 实现细节忽略 */
    void InorderTraversal( BinTree BT );
    void PreorderTraversal( BinTree BT );
    void PostorderTraversal( BinTree BT );
    void LevelorderTraversal( BinTree BT );
    
    int main()
    {
        BinTree BT = CreatBinTree();
        printf("Inorder:");    InorderTraversal(BT);    printf("
    ");
        printf("Preorder:");   PreorderTraversal(BT);   printf("
    ");
        printf("Postorder:");  PostorderTraversal(BT);  printf("
    ");
        printf("Levelorder:"); LevelorderTraversal(BT); printf("
    ");
        return 0;
    }
    /* 你的代码将被嵌在这里 */

    输出样例(对于图中给出的树):
    这里写图片描述

    Inorder: D B E F A G H C I
    Preorder: A B D F E C G H I
    Postorder: D E F B H G I C A
    Levelorder: A B C D F G I E H

    思路:
    二叉树的中,前,后,顺序遍历。
    代码:

    void LevelorderTraversal( BinTree BT )
    {
        if(BT == NULL)return;
        struct TNode *queue[2000];
        int head,tail;
        head = tail = 0;
        queue[tail++] = BT;
        while(head!=tail)
        {
            printf(" %c",queue[head]->Data);
            if(queue[head]->Left!=NULL)queue[tail++] = queue[head]->Left;
            if(queue[head]->Right!=NULL)queue[tail++] = queue[head]->Right;
            head++;
        }
    }
    
    void InorderTraversal( BinTree BT )
    {
        if(BT == NULL)return ;
    
        InorderTraversal(BT->Left);
        printf(" %c",BT->Data);
        InorderTraversal(BT->Right);
    
    }
    
    void PreorderTraversal( BinTree BT )
    {
        if(BT == NULL)return ;
    
        printf(" %c",BT->Data);
        PreorderTraversal(BT->Left);
        PreorderTraversal(BT->Right);
    
    }
    
    void PostorderTraversal( BinTree BT )
    {
        if(BT == NULL)return ;
    
        PostorderTraversal(BT->Left);
        PostorderTraversal(BT->Right);
        printf(" %c",BT->Data);
    
    }
    
  • 相关阅读:
    no.5.print sum
    0.1 hint crack
    no.4 抽奖测试
    no2.crossdomain.xml批量读取(待完善)
    no.1
    day7-读写分离
    day6-主从
    day5-备份
    day4-用户授权
    Day3-体系结构+查询+导入/出
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514216.html
Copyright © 2020-2023  润新知