二叉树层序遍历不知道为什么出错

问题遇到的现象

二叉树层序遍历出错

问题相关代码

typedef char ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
    ElementType Data;
    BinTree Left;
    BinTree Right;
};

void LevelorderTraversal( BinTree BT )
{
    if(!BT)return;
    BinTree q[1000];
    int front=0,rear=-1;
    q[++rear]=BT;
    while(front<=rear)
    {
        BinTree t=q[front++];
        printf(" %c",t->Data);
        if(t->Left) q[++rear]=t->Left;
        if(t->Right)q[++rear]=t->Right;
    }
}

麻烦描述得更详细些,比如具体的报错信息。
逻辑上没看出啥问题,可能是队列q溢出(树的大小超过1000),也可能是输出格式不符合要求(第一个元素输出前的空格)。

https://pintia.cn/problem-sets/15/problems/732
主要是这道题自定义测试部分不太完善,只能通过提交答案验证
提交答案显示前三个测试点答案错误,后两个测试点答案正确
完整作答代码如下:

void InorderTraversal( BinTree BT )
{
    if(!BT)return;
    InorderTraversal(BT->Left);
    printf(" %c",BT->Data);
    InorderTraversal(BT->Right);
}
void PreorderTraversal( BinTree BT )
{
    if(!BT)return;
    printf(" %c",BT->Data);
    InorderTraversal(BT->Left);
    InorderTraversal(BT->Right);
}
void PostorderTraversal( BinTree BT )
{
    if(!BT)return;
    InorderTraversal(BT->Left);
    InorderTraversal(BT->Right);
    printf(" %c",BT->Data);
}
void LevelorderTraversal( BinTree BT )
{
    BinTree q[1000];
    if(!BT)return;
    int front=0,rear=-1;
    q[++rear]=BT;
    while(front<=rear)
    {
        BinTree t=q[front++];
        printf(" %c",t->Data);
        if(t->Left) q[++rear]=t->Left;
        if(t->Right)q[++rear]=t->Right;
    }
}