问题 A: 树查找
时间限制: 1 Sec 内存限制: 32 MB
献花: 58 解决: 36
[献花][花圈][TK题库]
题目描述
有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出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>
#include <algorithm>
#include <cmath>
using namespace std;
const int MaxN = 1010;
int main()
{
#ifdef _Debug
freopen("data.txt","r+",stdin);
#endif
std::ios::sync_with_stdio(false);
int n,Data[MaxN],d;
while(cin >> n,n)
{
for(int i=0;i<n;++i)
cin>> Data[i];
cin >> d;
int th = ceil(log2(n+1));
if(th < d)
cout << "EMPTY\n";
else
{
int start = pow(2.0,1.0 * (d-1));
int end = min(pow(2.0,1.0 * d) -1,1.0 * n);
for(int i=start;i<=end;++i)
{
cout << i;
if(i!=end)
cout << " ";
}
cout <<endl;
}
}
return 0;
}
/**************************************************************
Problem: 1914
User: Sharwen
Language: C++
Result: 升仙
Time:1 ms
Memory:1892 kb
****************************************************************/