您的位置:首页 > 理论基础 > 数据结构算法

4-9 二叉树的遍历 (25分)

2016-07-20 18:11 344 查看
4-9 二叉树的遍历   (25分)本题要求给定二叉树的4种遍历。

函数接口定义:

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("\n");printf("Preorder:");   PreorderTraversal(BT);   printf("\n");printf("Postorder:");  PostorderTraversal(BT);  printf("\n");printf("Levelorder:"); LevelorderTraversal(BT); printf("\n");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
#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(){    BinTree BT[9];    int i;    for(i=0;i<9;i++) {        BT[i]=(BinTree)malloc(sizeof(struct TNode));        BT[i]->Data=(char)(65+i);    }    BT[0]->Left=BT[1];    BT[0]->Right=BT[2];        BT[1]->Left=BT[3];    BT[1]->Right=BT[5];        BT[2]->Left=BT[6];    BT[2]->Right=BT[8];        BT[3]->Left=NULL;    BT[3]->Right=NULL;        BT[4]->Left=NULL;    BT[4]->Right=NULL;        BT[5]->Left=BT[4];    BT[5]->Right=NULL;        BT[6]->Left=NULL;    BT[6]->Right=BT[7];        BT[7]->Left=NULL;    BT[7]->Right=NULL;        BT[8]->Left=NULL;    BT[8]->Right=NULL;    return BT[0];}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("\n");    printf("Preorder:");   PreorderTraversal(BT);   printf("\n");    printf("Postorder:");  PostorderTraversal(BT);  printf("\n");    printf("Levelorder:"); LevelorderTraversal(BT); printf("\n");    return 0;}void InorderTraversal( BinTree BT ){    if(BT){        InorderTraversal(BT->Left);        printf(" %c",BT->Data);        InorderTraversal(BT->Right);    }}void PreorderTraversal( BinTree BT ){    if(BT){        printf(" %c",BT->Data);        PreorderTraversal(BT->Left);        PreorderTraversal(BT->Right);    }}void PostorderTraversal( BinTree BT ){    if(BT){        PostorderTraversal(BT->Left);        PostorderTraversal(BT->Right);        printf(" %c",BT->Data);    }}void LevelorderTraversal( BinTree BT ){    BinTree q[100];    BinTree p;    int head=0,tail=0;    if(!BT) return;    if(BT){        q[tail++]=BT;         while(tail!=head){            p=q[head++];            printf(" %c",p->Data);            if(p->Left)     q[tail++]=p->Left;            if(p->Right)    q[tail++]=p->Right;        }     }} 

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息