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

二叉树层次遍历法求第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 Llama如何调用shell或者Python
  • ¥20 eclipse连接sap后代码跑出来空白
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案