幸会 2022-12-15 00:37 采纳率: 100%
浏览 29
已结题

关于#二叉树图遍历#的问题,如何解决?

题目:建立一个二叉树,按层遍历二叉树。真心请教各位下面原码中BiTNode *qu[Maxsize]处报错,该如何修改?

# include <stdio.h>
# include <stdlib.h> 
  typedef int Etype;
  typedef struct BiTNode  /* 树结点结构 */
      {  Etype data;
         struct BiTNode *lch,*rch;
      }BiTNode;
 
/* 函数原形声明 */
BiTNode *creat_bt1();
BiTNode *creat_bt2();
void LevelOrder(BiTNode *bt);
BiTNode *t; int n,n0,n1,n2;
/*  主函数 */
void main()
 { char ch; int k;
  do { printf("\n\n\n");
       printf("\n\n     1. 建立二叉树方法1 ");
       printf("\n\n     2. 建立二叉树方法2");
       printf("\n\n     3. 层次遍历二叉树");
       printf("\n\n     4. 结束程序运行");
       printf("\n======================================");
       printf("\n     请输入您的选择 (1,2,3,4,5)");  scanf("%d",&k);
       switch(k)
     { case 1:t=creat_bt1( );break; /*  调用性质5建立二叉树算法 */
       case 2:t=creat_bt2( );break; /*  调用递归建立二叉树算法   */
       case 3: { LevelOrder(t);                /*  调用层次遍历     */
                 printf("\n\n    打回车键,继续。"); ch=getchar();
               } break;
       case 4: exit(0);
      } /*  switch  */
      printf("\n ----------------");
   }while(k>=1 && k<5);
     printf("\n               再见!"); 
     printf("\n      打回车键,返回。"); 
     ch=getchar();
} /* main */  
/* 利用二叉树性质5 ,借助一维数组V 建立二叉树 */
BiTNode *creat_bt1()
 { BiTNode *t,*p,*v[20]; int i,j; Etype e; 
    /* 输入结点的序号i 、结点的数据e  */
    printf("\n i,data=?"); scanf("%d,%d",&i,&e);
    while(i!=0 && e!=0)              /* 当 i ,e都为0时,结束循环  */
       { p=(BiTNode *)malloc(sizeof(BiTNode));
         p->data=e; p->lch=NULL; p->rch=NULL;
         v[i]=p;
         if (i==1) t=p;                      /* 序号为1的结点是根 */
          else{ j=i/2;
                if(i%2==0) v[j]->lch=p; /* 序号为偶数,做左孩子*/
                   else   v[j]->rch=p;  /* 序号为奇数,做右孩子*/
              }
         printf("\n i,data=?"); scanf("%d,%d",&i,&e);
       }
      return(t);
 } /* creat_bt1 */
 /* 模仿先序递归遍历方法,建立二叉树 */
 BiTNode *creat_bt2()
  { BiTNode *t;
    Etype e;
     printf("\n data="); scanf("%d",&e);
     if(e==0) t=NULL;                  /* 对于0值,不分配新结点 */
       else { t=(BiTNode *)malloc(sizeof(BiTNode));
              t->data=e;
              t->lch=creat_bt2();  /* 左孩子获得新指针值  */
              t->rch=creat_bt2();  /* 右孩子获得新指针值  */
             }
     return(t);
  } /* creat_bt2 */

void LevelOrder(BiTNode *bt)
{   BiTNode *p;
    BiTNode *qu[Maxsize];
    int front,rear;
    front=rear=0;
    rear++;qu[rear]=bt;
    while (front!=rear)
    {    front=(front+1)%Maxsize;
        p=qu[front];
        printf("%c",p->data);
        if(p->lch!=NULL)
        {    rear=(rear+1)%Maxsize;
        qu[rear]=p->lch;
        }
        if(p->rch!=NULL)
        {    rear=(rear+1)%Maxsize;
            qu[rear]=p->rch;
        }
    }
 } 

下面是报错的内容
error C2065: 'Maxsize' : undeclared identifier
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2133: 'qu' : unknown size
第一次提问,若有描述不清楚请多多包涵,谢谢各位!

  • 写回答

1条回答 默认 最新

  • 清风_流 2022-12-15 12:50
    关注

    Maxsize变量没定义,变量需要声明再使用,如果在其他文件中地方声明成全局变量;或者宏,在该文件中需要引用;
    全局变量用extern,宏用include 包含头文件

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题