兰秋葭月 2021-10-18 20:57 采纳率: 85.7%
浏览 353
已结题

编写按层次顺序遍历二叉树的算法 ;实验要求:以二叉链表作为存储结构

我基本是按王道数据结构书里的代码敲的,但是运行不了,还有两个警告,请求指点

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef char ElemType;
//二叉树 
typedef struct BSTNode{
    ElemType data;
    struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
//队列节点 
typedef struct{
    ElemType data;
    struct LinkNode *next;
}LinkNode;
//queue
typedef struct{
    LinkNode *front,*rear;
}LinkQueue;
//初始化队列 
void InitQueue(LinkQueue Q){
    Q.front=Q.rear=(LinkNode *)malloc(sizeof(LinkNode));
    Q.front->next=NULL;
}
//判空 
bool IsEmpty(LinkQueue Q){
    printf("\nisempty");
    if(Q.front==Q.rear)    return true;
    else
        return false;
}
//入队 
void EnQueue(LinkQueue Q,BSTree T){
    LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode));
    s->data=T->data;
    s->next=NULL;
    Q.rear->next=s;
    Q.rear=s;
}
//出队 
bool DeQueue(LinkQueue Q,BSTree p){
    if(Q.front==Q.rear)    return false;
    LinkNode *t=Q.front->next;
    p->data=t->data;
    Q.front->next=t->next;
    if(Q.rear==t)
        Q.rear=Q.front;
    free(t);
    return true;
}
//按先序遍历的顺序创建二叉树 
BSTree Create(){
    BSTree T=NULL;
    ElemType ch;
    scanf("%c",&ch);
    if(ch=='#')    T=NULL;
    else{
        T=(BSTree)malloc(sizeof(BSTNode));
        T->data=ch;
        T->lchild=Create();
        T->rchild=Create();
    }
    return T;
}
//层次遍历 
void LevelOrder(BSTree T,LinkQueue Q){
    InitQueue(Q);
    BSTree p;
    EnQueue(Q,T);//根节点入队 
    while(!IsEmpty(Q)){
        DeQueue(Q,p);//队头节点出队 
        printf("%c",p->data);//访问出队节点 
        if(p->lchild!=NULL)
            EnQueue(Q,p->lchild);
        if(p->rchild!=NULL)
            EnQueue(Q,p->rchild);
    }
}
int main(){
    BSTree T;
    LinkQueue Q;
    T=Create();
    LevelOrder(T,Q);
    return 0;
}

img

  • 写回答

1条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 10月27日
      • 已采纳回答 10月19日
      • 创建了问题 10月18日

      悬赏问题

      • ¥15 如何预处理存在负值的样本数据,使其能够全都成为正的
      • ¥15 请问怎么通过css改变图片颜色
      • ¥15 c语言文件读取到结构体以及写入
      • ¥15 Blender: auto rig pro骨骼动画导出后变形穿模
      • ¥15 C51单片机的设计思路哈
      • ¥15 Linux脏牛提权漏洞
      • ¥15 为何我用uni-data-checkbox 标签在APP里调试无法显示?
      • ¥30 关于Stata软件OLS模型一些简单问题
      • ¥15 list分组填充数据
      • ¥15 python多进程与np数组与talib计算金融指标问题