写层序遍历的题
思路是对的,但是没实现出来
可能是对递归理解的还不够好,,
注意输出时不能加 &num[i] 不然输出的是地址,不是数据。
数组开大些
memset在 <cstring>
里
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n;
int tree[3000], num[3000];
int pos = 0;
void level(int root){
if(num[root] == -1) return ;
level(root*2+1);//左子树 下标 738194
num[root] = tree[pos]; // 0
pos++;
level(root*2+2);//右子树 下标 256
}
int main(){
scanf("%d",&n);
memset(num,-1,sizeof(num));
for(int i=0; i<n; i++){
scanf("%d",&tree[i]);
num[i] = 1;
}
sort(tree,tree+n);
level(0);
printf("%d",num[0]);
for(int i=1; i<n; i++)
printf(" %d",num[i]);
return 0;
}
哭泣