二叉树按层次遍历的代码实现

有大佬可以帮忙调试一下吗?😭😭已经可以运行了,但是它遍历的结果是死循环,可以看看是什么原因吗?孩子已经调改半天时间了,感觉应该没有问题了的,但是但是😭😭😭😭求求各位了

#include <Stdio.h>

#include <stdlib.h>

#include<iostream>

using namespace std;

#define MAX_TREE_SIZE 50

#define OK 1

#define false 0

typedef int ElemType;

typedef int Status;

 

//树的定义

typedef struct BiTNode

{

ElemType data;

struct BiTNode *lchild,*rchild;//左右孩子指针

}BiTNode,*BiTree;

 

//队列的定义

typedef struct

{

BiTree data[MAX_TREE_SIZE];//0号单元存储根结点

int front,rear;//分别指向左右孩子

}SqQueue;

 

void InitQueue(SqQueue &s);//初始化

bool QueueEmpty(SqQueue &s);//判断队列空

bool Treeenter(SqQueue &s,BiTree T);//进队列

bool Treeout(SqQueue &s,BiTree T);//出队列

bool GetTop(SqQueue &s);//读取队列顶元素

Status CreateBiTree(BiTree &T);//创建二叉树,递归创建,默认先序输入

Status LevelOrderTraverse(BiTree T);//层次遍历

 

//#include"层次遍历.h"

//初始化

void InitQueue(SqQueue &s)

{

s.front=s.rear=-1;

}

 

//判断队列空

bool QueueEmpty(SqQueue &s){

if(s.front==s.rear)

return true;

else

return false;

}

 

//进队列

bool Treeenter(SqQueue &s,BiTree T)

{

if(s.front==MAX_TREE_SIZE-1)

    {

return false;

}

s.front++;

s.data[++s.front]=T;

return true;

}

 

//出队列

bool Treeout(SqQueue &s,BiTree T)

{

if(s.front==s.rear)

    {

return false;

}

s.front++;

T=s.data[s.front--];

return true;

}

 

 

//创建二叉树,递归创建,默认先序输入

Status CreateBiTree(BiTree &T)

{

//按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树

//构造二叉树表示的二叉树T

char ch;

ch=getchar();

if(ch==' ')

    {

T=NULL;

}

else

    {

T=(BiTree)malloc(sizeof(BiTNode));

T->data=ch;

CreateBiTree(T->lchild);

CreateBiTree(T->rchild);

}

return OK;

}

 

//中序遍历--非递归

Status LevelOrderTraverse(BiTree T)

{//采用二叉链表存储结构

//层次遍历二叉树算法

SqQueue s;

InitQueue(s); //初始化队列

if(T!=NULL)

    {

        Treeenter(s,T);

    }

    while(!QueueEmpty(s))

    {

        Treeout(s,T);

        printf("%c",T->data);

        if(T->lchild!=NULL)

        {

            Treeenter(s,T->lchild);

        }

        if(T->rchild!=NULL)

        {

            Treeenter(s,T->rchild);

        }

    }

return OK;

}

 

 

//#include"层次遍历.h"

int main()

{

    BiTree tree;

    cout<<"请输入字符串:"<<endl;

    CreateBiTree(tree);

    printf("层次遍历:");

    LevelOrderTraverse(tree);

    return 0;

}