zoukankan      html  css  js  c++  java
  • 二叉树的四种遍历

    函数接口定义:

    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);
    
    }
    
  • 相关阅读:
    python 生成随机数、生成 uuid
    python django 之 django自带的分页
    python django 之 django自定制分页
    禁止用户使用 sudo su 命令进入root 模式
    MySQL学习之路 一 : MySQL 5.7.19 源码安装
    Ubuntu 16.04 apt 国内源
    Python开发(三):字符编码,文件操作,函数
    如何装双系统详细步骤:以win10+centos为例
    中缀表达式转换成后缀表达式
    getch()、getche()和getchar()函数
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514216.html
Copyright © 2011-2022 走看看