https://www.nowcoder.com/practice/9a10d5e7d99c45e2a462644d46c428e4?tpId=67&tqId=29641&rp=0&ru=/kaoyan/retest/1005&qru=/ta/bupt-kaoyan/question-ranking

题目描述

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

输入描述:

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

输出描述:

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

输入

4
1 2 3 4
2

输出

2 3

完全二叉树如果不是最后一层则该层节点数目固定可以先打表,最后一层单独算即可
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
int num,exl[];exl[]=;
for(int i=;i<=;i++)
exl[i]=exl[i-]*;
while(scanf("%d",&num)!=EOF)
{
int donser[],deep;
for(int i=;i<=num;i++)
scanf("%d",&donser[i]);
scanf("%d",&deep);
int temp=,sum=;
while(temp!=deep)
{
num-=exl[temp];
sum+=exl[temp];
temp++;
if(num<)
{
num=;
break;
}
//cout<<"num:"<<num<<" sum:"<<sum<<" temp:"<<temp<<" exl:temp:"<<exl[temp]<<endl;
}
if(num==)
{
cout<<"EMPTY"<<endl;
continue;
}
if(num>=exl[temp])
{
for(int i=sum+;i<=sum+exl[temp];i++)
{
cout<<donser[i];
if(i!=sum+exl[temp])
cout<<" ";
} }
else
{
for(int i=sum+;i<=sum+num;i++)
{
cout<<donser[i];
if(i!=sum+num)
cout<<" ";
}
}
cout<<endl;
}
return ;
}

最新文章

  1. Java文件中出现这样的提示错误与解决方法:Cannot return from outside a function or method?
  2. excel 2010 学习笔记一 Vlookup 函数的使用
  3. python model对象转为dict数据
  4. Pycharm使用问题# 内部Terminal
  5. http协议读书笔记2-连接管理
  6. 编写并发程序 Inversion
  7. XHTML1.0对HTML4.0的改进
  8. OC语法1——OC概述
  9. destoon框架二次开发【整理】
  10. hive权威指南&lt;一&gt;
  11. 后端分布式系列:分布式存储-HDFS 与 GFS 的设计差异
  12. IDEA创建applicationContext.xml 无法自动提示,文件图标是文本类型
  13. python简单爬虫 用beautifulsoup爬取百度百科词条
  14. 《python语言程序设计》_第4章_选择
  15. Java 对远程文件的操作
  16. 【bzoj 4756】[Usaco2017 Jan] Promotion Counting
  17. lojround6
  18. 多线程工具之CompletionService
  19. 3.Liunx网络管理命令
  20. BFC特性 形成BFC

热门文章

  1. Python赋值运算及流程控制
  2. C#图形学习笔记
  3. 使用 HTML5 Geolocation 构建基于地理位置的 Web 应用学习网站分享
  4. 有关linux的GPG签名验证错误的解决方法。
  5. Day17re模块和hashlib模块
  6. 记如何解决蓝桥杯中to_string和atoi等无法使用的问题
  7. python中判断字符串是否为中文
  8. linux 系统备份还原
  9. Linux基础命令详解-2
  10. ctype.h 第2章