#include <stdio.h>
#include <algorithm>
using namespace std;
int n;
int in[1001];
int tree[1001];
void preorder(int r, int &i);
int left(int i);
int right(int i);
int main(int argc, char *argv[]) {
scanf("%d", &n);
int i, j;
for (i = 0; i < n; i++) {
scanf("%d", &in[i]);
}
sort(in, in + n);
int pos = 0;
preorder(0, pos);
for (i = 0; i < n - 1; i++)
printf("%d ", tree[i]);
printf("%d\n", tree[n - 1]);
return 0;
}
void preorder(int r, int &i) {
if (left(r) >= 0) preorder(left(r), i);
tree[r] = in[i++];
if (right(r) >= 0) preorder(right(r), i);
}
int left(int i) {
if (2 * i + 1 >= n) return -1;
else return 2 * i + 1;
}
int right(int i) {
if (2 * i + 2 >= n) return -1;
else return 2 * i + 2;
}
【PAT甲级】1064. Complete Binary Search Tree (30)
最新推荐文章于 2024-11-28 19:59:05 发布
