理解树的特征就可。
完全二叉树的节点个数<=2^n-1;
每一层的节点数为2^(n-1);
若层次遍历存放在已0开头的数组中,第i层的开始节点下标为2^(i-1)-2,结束节点下标为2^(i)-2。
#include<iostream>
#include<vector>
#include<math.h>
using namespace std;
int main(){
vector<int> vec;
int n,in,d;
while(cin>>n){
vec.clear();
for(int i=0;i<n;i++){
cin>>in;
vec.push_back(in);
}cin>>d;
int toleval=log(n+1)/log(2);
if(d>toleval){
cout<<"EMPTY"<<endl;
}else{
int pre=pow(2,d-1)-1;
int ed=pow(2,d)-2;
ed=min(ed,n-1);
for(int i=pre;i<=ed;i++){
cout<<vec[i]<<" ";
}cout<<endl;
}
}
return 0;
}


京公网安备 11010502036488号