题目描述
有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出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<iostream>
using namespace std;
#include<cmath>
#include<stdio.h>
int n;
int d;
int t;
int a[1001];
int main()
{
while(scanf("%d",&n)&&n!=0)
{
for(int i = 0; i<n; i++)
{
cin>>a[i];
}
cin>>d;
int left = pow((double)2,d-1);
int right = pow((double)2,d)-1;
if(n<left)
cout<<"EMPTY";//注意后面不用换行,否则格式错误
else
{
int isFirst = 1;//开始把这句话放在了下面的循环里,导致输出之间没有空格。因为每一次在输出之前isFirst都会被置一
for(int i = left-1;i<n&&i<right;i++)
{
if(isFirst)//除最后一个之外,处理每个元素之间用空格隔开的小技巧,用isFirst标志
{
printf("%d",a[i]);
isFirst = 0;
}
else
printf(" %d",a[i]);
}
}
printf("\n");
}
return 0;
}