1064 Complete Binary Search Tree (BST&CBT)
思路:
d
f
s
dfs
dfs,因为
B
S
T
BST
BST的中序遍历是非递减序,而
C
B
T
(
C
o
m
p
l
e
t
e
B
i
n
a
r
y
T
r
e
e
)
CBT(Complete\ Binary \ Tree)
CBT(Complete Binary Tree) 是完全二叉搜索树,记
r
o
o
t
root
root为编号
0
0
0。
左儿子为:
r
o
o
t
×
2
+
1
root\times 2+1
root×2+1。
右儿子为:
r
o
o
t
×
2
+
2
root\times 2+2
root×2+2。
最后层次序列就是
C
B
T
CBT
CBT按照编号从小到大依次输出即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define il inline
int n,a[N],ans[N],cnt;
void dfs(int rt){
if(rt<n){
dfs((rt<<1)+1);
ans[rt]=a[cnt++];
dfs((rt<<1)+2);
}
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);dfs(0);
printf("%d",ans[0]);
for(int i=1;i<n;i++) printf(" %d",ans[i]);
return 0;
}