树查找(暑假每日一题 18)

给定一棵包含 n n n 个结点(编号 1 ∼ n 1∼n 1n)的完全二叉树的层序遍历序列,请按照从左到右的顺序输出该树第 k k k 层的全部结点编号。

输入格式
第一行包含整数 n n n

第二行包含 n n n 个整数,表示该二叉树的层序遍历序列。

第三行包含整数 k k k

输出格式
共一行,按照从左到右的顺序输出该树第 k k k 层的全部结点编号。

数与数之间用单个空格隔开。

若无该层结点,则输出 EMPTY

数据范围
1 ≤ n ≤ 1000 , 1≤n≤1000, 1n1000
1 ≤ k ≤ 20 1≤k≤20 1k20
输入样例:

4
1 2 3 4
2

输出样例:

2 3

#include<iostream>

using namespace std;

const int N = 1010;

int n, k;
int a[N];

int main(){
    
    
    
    cin >> n;
    for(int i = 1; i <= n; i++)
        cin >> a[i];
        
    cin >> k;
    bool flag = true;
    for(int i = 1 << (k-1); i < 1 << k && i <= n; i++)
        cout << a[i] << ' ', flag = false;
    if(flag) puts("EMPTY");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/126232856