非递归方式实现二叉树四种遍历
admin
2024-01-20 21:18:42
0

问题描述 

【问题描述】

非递归方式实现二叉树的先序遍历、中序遍历、后序遍历和层序遍历。

提示:(1)利用先序建立二叉树序列;(2)求四种遍历结果。

【输入形式】

(1)先序建立二叉树序列

(2)非递归方式遍历

【输出形式】

四种遍历结果

【样例输入】

ABD#G###CE##FH###

【样例输出】

PreOrder:ABDGCEFH

InOrder:DGBAECHF

PostOrder:GDBEHFCA

CcOrder:ABCDEFGH

【评分标准】:四种遍历必须以非递归方式实现。

程序实现 

#include
#include
#define MAX 20

typedef struct BitNode
{
    char data;
    struct BitNode *lchild,*rchild;
}BitNode,*BiTree;

typedef struct SqQueue
{
    int data[MAX];
    int rear,front;
}SqQueue;

void Creat (BiTree *t)
{
    char s;
    BiTree p;
    scanf("%c",&s);
    if(s=='#')
    {
        *t=0;
        return;
    }
    p=(BiTree)malloc(sizeof(BitNode));
    p->data=s;
    *t=p;
    Creat(&p->lchild);
    Creat(&p->rchild);
}

void Pre_n(BiTree p)
{
    BiTree stack[MAX],q;
    int top=0,i;
    for(i=0;i     stack[i]=0;
    q=p;
    while(q)
    {
        printf("%c",q->data);
        if(q->rchild)
            stack[top++]=q->rchild;
        if(q->lchild)
            q=q->lchild;
        else if(top>0)
                q=stack[--top];
             else
                 q=0;
    }
}

void In_n(BiTree t)
{
    BiTree stack[MAX],p;
    int top=0;
    p=t;
   if(p)
   {
       while(p||top>0)
       {
           while(p)
           {
               stack[top++]=p;
               p=p->lchild;
           }
           if(top>0)
           {
               p=stack[--top];
               printf("%c",p->data);
               p=p->rchild;
           }
       }
   }
}

void Post_n(BiTree t)
{
    BiTree stack[MAX],p;
    int i,top=0,flag[MAX];
    for(i=0;i     {
        stack[i]=0;
        flag[i]=0;
    }
    if(!t)
        return;
    p=t;
    while(p||top>0)
    {
        if(p)
        {
            stack[top]=p;
            flag[top++]=1;
            p=p->lchild;
        }
        else
        {
            p=stack[top-1];
            if(flag[top-1]==1)
            {
                flag[top-1]=2;
                p=p->rchild;
            }
            else
            {
                printf("%c",p->data);
                top--;
                p=0;
            }
        }
    }
}

void CcOrder (BiTree t)
{
    BiTree p;
    SqQueue qlist,*q;
    q=&qlist;
    q->rear=0;
    q->front=0;
    p=t;
    if(p)
    {
        printf("%c",p->data);
        q->data[q->rear]=p;
        q->rear=(q->rear+1)%MAX;
        while(q->front!=q->rear)
        {
            p=q->data[q->front];
            q->front=(q->front+1)%MAX;
            if(p->lchild)
            {
                printf("%c",p->lchild->data);
                q->data[q->rear]=p->lchild;
                q->rear=(q->rear+1)%MAX;
            }
            if(p->rchild)
                {
                    printf("%c",p->rchild->data);
                    q->data[q->rear]=p->rchild;
                    q->rear=(q->rear+1)%MAX;
                }
        }
    }
}
int main()
{
    BiTree t=0;
    Creat(&t);
    if(!t)
        printf("");
    else
    {
        printf("PreOrder:");
        Pre_n(t);
        printf("\n");
        printf("InOrder:");
        In_n(t);
        printf("\n");
        printf("PostOrder:");
        Post_n(t);
        printf("\n");
        printf("CcOrder:");
        CcOrder(t);
        printf("\n");
        return 0;
    }

相关内容

热门资讯

windows 10系统安卓双... 哇,你知道吗?现在市面上竟然有手机可以同时运行Windows 10和安卓系统!这可不是什么天方夜谭,...
安卓10系统改装包,体验全新智... 哇塞,你有没有想过,你的手机系统也能来个华丽变身?没错,就是那个我们每天不离手的安卓系统!今天,我要...
安卓系统占空间多少,原因、影响... 亲爱的手机控们,你们有没有发现,自己心爱的安卓手机,好像越来越“胖”了呢?空间占用问题成了我们日常使...
安卓系统怎么找相册,安卓系统相... 捕捉美好瞬间,安卓系统相册大揭秘! 你是不是也有过这样的烦恼:手机里的照片越来越多,却总是找不到心仪...
安卓系统6够用吗,安卓系统6版... 你有没有想过,你的安卓手机系统升级到6了,是不是真的够用呢?咱们来聊聊这个话题,看看安卓系统6到底能...
大管家巡航系统安卓系统,提升工... 你的智慧物业好帮手——大管家巡航系统安卓系统深度体验想象每天清晨,阳光透过窗帘洒在你的脸上,而你只需...
安卓4.2.1系统软件,功能升... 你有没有发现,手机里的系统软件就像是个贴心的管家,默默守护着你的手机生活。今天,咱们就来聊聊安卓4....
小米刷原生系统安卓,操作指南与... 哇塞,你有没有想过,你的小米手机其实可以变身成安卓界的“超级英雄”?没错,就是刷上原生安卓系统!想象...
安卓系统如何开空调,智能生活新... 夏天来了,是不是觉得家里的空调成了救星?别急,今天就来教你怎么用安卓手机轻松开空调,让你在炎炎夏日里...
安卓手机刷winxp 系统,探... 哇塞,你有没有想过,你的安卓手机竟然能变身成为一台Windows XP电脑?没错,你没听错,就是那个...
安卓系统 位置信息,技术原... 你有没有发现,现在手机里的各种应用都离不开一个神奇的功能——位置信息!没错,就是那个能告诉你“我在哪...
安卓系统会不会倒闭,国产手机厂... 最近科技圈可是炸开了锅,大家都在热议一个话题:安卓系统会不会倒闭?这可是个让人心头一紧的问题,毕竟安...
原生安卓系统检测号码,原生安卓... 亲爱的手机控们,你是否曾好奇过,你的手机里那些神秘的号码都绑定在了哪些平台上?今天,就让我带你一起探...
原生安卓系统手机购买,精选推荐... 原生安卓,纯净体验,你的手机该换新伙伴啦!Hey,亲爱的手机控们,你是否厌倦了那些花里胡哨的定制系统...
安卓系统能直播吗,技术、应用与... 你有没有想过,手机里的安卓系统竟然也能直播呢?没错,就是那个我们每天不离手的安卓手机,现在不仅能打电...
kindle499 安卓系统,... 亲爱的读者们,今天我要和大家分享一个超级酷炫的改造经历——把我的Kindle 499刷成了安卓系统!...
安卓系统哪个好coloros,... 你有没有想过,手机里的安卓系统就像是个大厨,不同的“菜谱”做出来的味道可大不一样呢!今天,咱们就来聊...
xp系统能装安卓系统么,探索跨... 你有没有想过,那个经典的XP系统,竟然也能在安卓手机上“大显身手”?没错,就是那个曾经陪伴我们度过了...
安卓12系统界面图,全新设计语... 哇哦,你有没有注意到,你的手机屏幕上那些小小的图标和文字,最近是不是变得更有趣了?没错,这就是安卓1...
开发安卓系统开发,Androi... 开启你的安卓开发之旅:全方位攻略 亲爱的读者们,你是否对安卓系统开发充满好奇?想要亲手打造一款属于自...