我们可以通过用数组模拟完全二叉树,根据完全二叉树的特点,
已知任意一种遍历,可以唯一的确定一颗完全二叉树,上代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int postorder[100],tree[100];
int ind = 1;
void gettree(int x){
if(x > n) return ;
else{
gettree(x << 1);
gettree((x << 1) + 1);
tree[x] = postorder[ind++];
}
return ;
}
void preorder(int x){
if(x > n) return ;
else{
printf("%d ",tree[x]);
preorder(x << 1);
preorder((x << 1) + 1);
}
}
void inorder(int x){
if(x > n) return ;
else{
inorder(x << 1);
printf("%d ",tree[x]);
inorder((x << 1) + 1);
}
}
int main(){
scanf("%d",&n);
for(int i = 1; i <= n; i++){
scanf("%d",&postorder[i]);
}
gettree(1);
printf("层次遍历:");
for(int i = 1; i <= n; i++) printf("%d ",tree[i]);
}