6-2 二叉树的遍历 (二叉树的四种遍历方法)

来源:互联网 发布:win访问mac共享文件夹 编辑:程序博客网 时间:2024/05/22 21:15

6-2 二叉树的遍历(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 IPreorder: A B D F E C G H IPostorder: D E F B H G I C ALevelorder: A B C D F G I E H/* */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 p;   BinTree q[55];   int f=0,r=0;   if(BT){               //首先需要判断该树是否是空树     q[r++]=BT;     while(f!=r){       p=q[f++];       printf(" %c",p->Data);       if(p->Left!=NULL){         q[r++]=p->Left;       }       if(p->Right!=NULL){         q[r++]=p->Right;       }     }        }  } 
原创粉丝点击