logo头像

往者不可谏,来者犹可追。

牛客-北邮-树查找

题目描述

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


输入描述:

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


输出描述:

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


示例1

输入

4
1 2 3 4
2

输出

2 3


分析

深度为1,起点为1;深度为2,起点为2;深度为3,起点为4…
推出深度为d,起点为pow(2,d-1);
这更像一道数学规律题。


代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;

int main() {
int n, d;
vector<int> num;
cin>>n;
num.push_back(0);
for(int i = 0; i < n; i ++) {
int a;
cin>>a;
num.push_back(a);
}
cin>>d;
if(pow(2,d-1)>=num.size()) {
cout<<"EMPTY"<<endl;
} else {
for(int i = pow(2,d-1); i<num.size()&&i<pow(2,d); i++) {
cout<<num[i];
if(i<num.size()-1&&i<pow(2,d)-1) {
cout<<" ";
} else {
cout<<endl;
}
}
}
return 0;
}
上一篇