理解树的特征就可。
完全二叉树的节点个数<=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; }