给出一个完全二叉树的后序遍历序列,求该树的层次遍历序列
思路:
用数组储存该树的层次遍历序列。
按照层次遍历的顺序从1开始排序,一颗完全二叉树的一个序列为 i 的根节点的左子树序列为2i,右子树序列为2i+1。
树的后序遍历为先左再右,最后根结点,使用递归函数根据后序遍历的顺序按照结点的序列依次存入数组。该数组即为层次遍历的序列。
#include<iostream>
using namespace std;
int n;
int a[1000];
void dfs(int x)
{
if(x>n) return;
dfs(2*x); //先输入左子树
dfs(2*x+1); //再输入右子树
cin>>a[x];
};
int main()
{
cin>>n;
dfs(1);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
}