鱼C论坛

 找回密码
 立即注册
查看: 1788|回复: 1

关于二叉树的层次遍历

[复制链接]
发表于 2018-11-6 21:04:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么这个代码输出的数据是乱码,是哪里错了?
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
typedef char ElemType;
typedef struct BTNode
{
    ElemType data;
    struct BTNode *lchild,*rchild;
}BTNode,*BiTree;
typedef struct
{
    BiTree *base;
    int front;
    int rear;
}SqQueue;
void CreatBiTree(BiTree &t)
{
    char c;
    scanf("%c",&c);
    if(c=='#')
    {
        t=NULL;
    }
    else
    {
        t=new BTNode;
        t->data=c;
        CreatBiTree(t->lchild);
        CreatBiTree(t->rchild);
    }

}
void InitSqQueue(SqQueue &q)
{
    q.base=new BiTree[MAXSIZE];
    q.front=q.rear=0;
}
int Push(SqQueue &q,BiTree t)
{
    if((q.rear+1)%MAXSIZE==q.front)
    return 0;
    q.base[q.rear]=t;
    q.rear=(q.rear+1)%MAXSIZE;
    return 1;
}
int Pop(SqQueue &q)
{
    if(q.rear==q.front)
        return 0;
    q.front=(q.front+1)%MAXSIZE;
    return 1;
}
int QueueEmpty(SqQueue q)
{
    return (q.front==q.rear);
}
BiTree Gethead(SqQueue q)
{
    if(QueueEmpty(q))
    {
        return NULL;
    }
    else return (q.base[(q.front+1)%MAXSIZE]);
}
void Cengci(BiTree t)
{
    SqQueue q;
    BTNode *p;
    InitSqQueue(q);
    Push(q,t);
    while(!QueueEmpty(q))
    {
        p=Gethead(q);
        Pop(q);
        printf("%c ",p->data);
        if(p->lchild!=NULL)
        {
            Push(q,p->lchild);
        }
        if(p->rchild!=NULL)
        {
            Push(q,p->rchild);
        }
    }
}
int main()
{
    BiTree T=NULL;
    printf("请输入二叉树的内容\n");
    CreatBiTree(T);
    printf("\n");
    printf("二叉树的先序输出是:\n");
    Cengci(T);
    return 1;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-13 10:38:21 | 显示全部楼层
你是 怎么键入的  能否 发上来 看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 01:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表