#include <iostream>
#include <valarray>
#include <queue>
#include <cstring>
#include <stack>
using namespace std;
int main() {
int n;
cin>>n;
int tree[n+1];
for (int i = 1; i < n+1; ++i) {
cin>>tree[i];
}
int high;
cin>>high;
int min= pow(2,high-1); // 需输出的节点的最小编号
int max= pow(2,high); // 需输出的最大节点的 下一个节点的编号
if (min>n){
cout<<"EMPTY";
}
for (int i = min; i < max&&i<n+1; ++i) {
cout<<tree[i]<<" ";
}
return 0;
}
用数组来存就可以,完全二叉树的节点规律找到就很简单

京公网安备 11010502036488号