噜啦噜啦噜呼呼呼 2023-11-01 01:26 采纳率: 66.3%
浏览 26
已结题

二叉树层次遍历法求第k层结点个数

采用层次遍历法求二叉树b中第k层结点的个数


#include "sqqueue.cpp"    //因为sqqueue.cpp文件里已经调用了btree.cpp,所以这里不能重复调用了 

void LevelOrder(BTNode *b,int k)
{
    SqQueue *qu;   //qu为顺序队指针 
    InitQueue(qu);
    BTNode *p;     //p指向出队元素 
    int curl=1,cnt,i;   //curl表示当前层数,cnt为当前层的结点个数 
    enQueue(qu,b); //将根结点入队   注意b的类型是BTNode的,所以sqqueue.cpp文件要进行修改 
    while(!QueueEmpty(qu)&&curl!=k)
    {
        cnt=CountQueue(qu); 
        for(i=0;i<cnt;i++) 
        {
            deQueue(qu,p);               //将这一行所有结点出队 
            if(p->lchild!=NULL)          //将这一行所有孩子结点入队 
                enQueue(qu,p->lchild);
            if(p->rchild!=NULL)
                enQueue(qu,p->rchild);
        }
        curl++;
    } 
    cnt=CountQueue(qu);
    printf("%d",cnt);
}

int main()
{
    SqQueue *qu;
    BTNode *b;
    char str[MaxSize];
    int k;
    printf("请输入一个字符串:");
    gets(str);
    CreateBTree(b,str);
    printf("创建的二叉树为:");
    DispBTree(b);
    printf("\n");
    printf("请输入要看的层数:");
    scanf("%d",&k);
    printf("第%d层的结点个数为:",k);
    LevelOrder(b,k);
    DestroyQueue(qu);
    return 0;
} 

img


sqqueue.cpp文件里面包含了二叉树基本算法和队列基本算法
不知道哪里出错了,如果查看第一行输出没问题,查看其他行就没有结果了,哪里错了啊

  • 写回答

2条回答 默认 最新

  • 学废c++ 2023-11-01 01:27
    关注

    这么晚

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月4日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含