当前位置: 首页 > news >正文

《算法笔记》9.3小节——数据结构专题(2)->树的遍历 问题 A: 树查找

题目描述

有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。

输入

输入有多组数据。
每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。

输出

输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。

样例输入
5
1 2 3 4 5 
7
7
1 2 3 4 5 6 7 
2
0
样例输出
EMPTY
2 3

分析: 由于是完全二叉树,可以用数组存储。直接找到某一层对应的编号输出即可。或者按层次分别存储。

#include    <algorithm>
#include     <iostream>
#include      <cstdlib>
#include      <cstring>
#include       <string>
#include       <vector>
#include       <cstdio>
#include        <queue>
#include        <stack>
#include        <ctime>
#include        <cmath>
#include          <map>
#include          <set>
#include<unordered_map>
#define INF 0x3f3f3f3f
#define db1(x) cout<<#x<<"="<<(x)<<endl
#define db2(x,y) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<endl
#define db3(x,y,z) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<endl
#define db4(x,y,z,a) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<", "<<#a<<"="<<(a)<<endl
#define db5(x,y,z,a,r) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<", "<<#a<<"="<<(a)<<", "<<#r<<"="<<(r)<<endl
using namespace std;

int main(void)
{
    #ifdef test
    freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    clock_t start=clock();
    #endif //test

    int n;
    while(scanf("%d",&n),n)
    {
        int num[11][1026];memset(num,0,sizeof(num));
        int len[15]={0,1,2,4,8,16,32,64,128,256,512,1024};
        int index=1;
        for(int i=0;i<n;++i)
        {
            int a;scanf("%d",&a);
            if(num[index][0]<len[index])
            {
                num[index][num[index][0]+1]=a,num[index][0]++;
            }
            else
            {
                index++;
                num[index][num[index][0]+1]=a,num[index][0]++;
            }
        }
        int d;scanf("%d",&d);
        if(num[d][0]==0)printf("EMPTY\n");
        else
        {
            for(int j=1;j<=num[d][0];++j)
            {
                if(j==1)printf("%d",num[d][j]);
                else printf(" %d",num[d][j]);
            }printf("\n");
        }
    }

    #ifdef test
    clockid_t end=clock();
    double endtime=(double)(end-start)/CLOCKS_PER_SEC;
    printf("\n\n\n\n\n");
    cout<<"Total time:"<<endtime<<"s"<<endl;        //s为单位
    cout<<"Total time:"<<endtime*1000<<"ms"<<endl;    //ms为单位
    #endif //test
    return 0;
}

相关文章:

  • Tomcat - Session 会话保持
  • 《Waf 火绒终端防护绕过实战:系统程序副本+Certutil木马下载技术详解》
  • 【NLP】 API在大语言模型中的应用
  • FPGA管脚约束
  • docker5-容器综合实战与存储卷
  • 优先级队列 2
  • 【JavaEE】网络编程socket
  • 【面试中的分布式定时任务】
  • 上海亚商投顾:沪指窄幅震荡 深海科技概念持续活跃
  • 封装一个分割线组件
  • 【C#】Winform调用NModbus实现Modbus TCP 主站通讯
  • QT Quick(C++)跨平台应用程序项目实战教程 2 — 环境搭建和项目创建
  • 批量删除 PPT 空白幻灯片页面
  • 【系统架构设计师】操作系统 - 特殊操作系统 ③ ( 微内核操作系统 | 单体内核 操作系统 | 内核态 | 用户态 | 单体内核 与 微内核 对比 )
  • 霍尔传感器与电流互感器的区别
  • 校园论坛系统自动化测试报告
  • 看盘细节系列 篇四:集合竞价低开3%以上
  • Cursor的使用感受,帮你使用好自动化编程工具,整理笔记
  • vscode查看文件历史git commit记录
  • FPGA中级项目5——VGA part1
  • 在循环往复的拍摄中,重新发现世界
  • 千亿市值光储龙头董事长向母校合肥工业大学捐赠1亿元
  • 影子调查丨危房之下,百余住户搬离梦嘉商贸楼
  • 强政神鸟——故宫里的乌鸦
  • 现场|贝聿铭上海大展:回到他建筑梦的初始之地
  • 美联储官员:若特朗普高额关税致失业率飙升,将支持降息