文章
11
粉丝
152
获赞
9
访问
36.0k
方法一:利用完全二叉树的性质,除最后一层外都是满二叉树,且最后一层的叶子结点都集中在树的左侧
#include <bits/stdc++.h>
using namespace std;
int n, d;//n代表节点个数,d代表深度
void input(vector<int> &arr){
for(int i = 0; i < n; i++){
cin >> arr[i];
}
}
int main(){
while(cin >> n){
vector<int> arr(n);
input(arr);
cin >> d;
int left = (int)pow(2, d - 1) - 1, right = (int)pow(2, d) - 2;
if(left < 0 || right < 0 || left >= n || right >= n){
printf("EMPTY\n");
continue;
}
for(int i = left; i <= right; i++){
printf("%d", arr[i]);
if(i != right){
printf(" ");
}
}
printf("\n");
}
return 0;
}
方法二:建立完全二叉树进行层次遍历
#include <bits/stdc++.h>
using namespace std;
int d;//代表深度
struct node{
int val;
node* left, *right;
};
typedef pair<node*, int> tr...
登录后发布评论
暂无评论,来抢沙发