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

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;         }      } } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试小牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值