4-9 二叉树的遍历

来源:互联网 发布:淘宝支付金额排名层级 编辑:程序博客网 时间:2024/05/18 03:51

二叉树的四种遍历

#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;}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 queue[100],T;//使用最简单的顺序队列,一定要定义为树型变量    int rear,front;    rear=-1;    front=-1;    if(!BT)        return;    queue[++rear]=BT;    while(rear!=front)    {       T=queue[++front];       printf(" %c",T->Data);       if(T->Left)           queue[++rear]=T->Left;       if(T->Right)           queue[++rear]=T->Right;    }}
0 0
原创粉丝点击