#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];//存入初始数组
int b[N];//建立完成的二叉树
int co;
int n;
//给出遍历方式以及数 建立二叉树
void dfs(int u)//建立二叉树
{
if(u>n) return ;
dfs(2*u);//给出后序数列
dfs(2*u+1);
b[u]=a[co++];
// dfs(2*u);//给出中序数列
// b[u]=a[co++];
// dfs(2*u+1);
// b[u]=a[co++];//给出前序数列
// dfs(2*u);
// dfs(2*u+1);
//若是层次输入 则直接顺序输入进去即可
}
void dfs2(int u)//按照 前序,中序,后序 输出
{
if(u>n) return ;
dfs(2*u);//输出后序数列
dfs(2*u+1);
cout<<b[u]<<' ';
// dfs(2*u);//输出中序数列
// cout<<b[u]<<' ';
// dfs(2*u+1);
// cout<<b[u]<<' ';//输出前序数列
// dfs(2*u);
// dfs(2*u+1);
//若是层次输出 则直接按照顺序输出即可;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
dfs(1);
dfs2(1);
return 0;
}
/*
8
91 71 2 34 10 15 55 18
*/
补提记录
文章评论