数据结构:二叉树层次遍历问题

该代码无法输出任何内容就结束,请问是怎么回事

#include <stdio.h>
//二叉树的类型定义 
typedef struct BiNode{
    char data;
    struct BiNode* LChild;
    struct BiNode* RChild;
}BiNode,*BiTree;
//队列的类型定义 
typedef struct Node{
    char data;
    struct Node* next;
}LinkQueueNode;

typedef struct{
    LinkQueueNode *front;
    LinkQueueNode *rear;
}LinkQueue;

//初始化队
int InitQueue(LinkQueue *q)
{
    q->front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
    if(q->front!=NULL)
    {
        q->rear=q->front;
        q->front->next=NULL;
        return(1);
    }
    else return(0);
} 
//入队操作
int EnterQueue(LinkQueue *q,char x)
{
    LinkQueueNode *NewNode;
    NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
    if(NewNode!=NULL)
    {
        NewNode->data=x;
        NewNode->next=NULL;
        q->rear->next=NewNode;
        q->rear=NewNode;
        return(1);
    }
    else return(0);
} 

//出队操作
int DeleteQueue(LinkQueue *q,char *x)
{
    LinkQueueNode *p;
    if(q->front==q->rear)
     return(0);
    p=q->front->next;
    q->front->next=p->next;
    if(q->rear==p)
     q->rear=q->front;
    *x=p->data;
    free(q);
    return(1);
} 
int isEmpty(LinkQueue *q)
{
    if(q->front==NULL)
        return 1;
    return 0;
}
//按层序打印二叉树 
void printInLines(BiTree T)
{
    LinkQueue q;
    InitQueue(&q);
    if(T==NULL)
     return;
    EnterQueue(&q,T->data);//根节点进队
    while(!isEmpty(&q))
    {
        //出对保存队头并访问 
        BiNode *s;
        DeleteQueue(&q,s);
        printf("%c",s->data);
        //将出队结点的左子树根入队
        EnterQueue(&q,(s->LChild)->data);
        //将出队结点的右子树根入队
        EnterQueue(&q,(s->RChild)->data); 
    } 

}
//建立二叉树 
void createBiTree(BiTree* T)
{
    char ch;
    scanf("%c",&ch);
    if(ch='.')
     *T=NULL;
    else
    {
        *T=(BiTree)malloc(sizeof(BiNode));
        (*T)->data=ch;
        createBiTree((*T)->LChild);
        createBiTree((*T)->RChild);
    }
}
void main()
{
    BiTree T;
    createBiTree(&T);
    printInLines(&T); 
}

1个回答

createBitree函数中,if(ch = '.'),应该写成if (ch == '.')吧。还有,这个函数中,应该写成createBiTree(&(*T)->LChild)吧,createBiTree要求传的是二级指针。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问