题目描述
输入样例
8
91 71 2 34 10 15 55 18
输出样例
18 34 55 71 2 10 15 91
思路:递归建树
用数组模拟树,pos的树根下标,2 * pos为左子树树根下标,2 * pos + 1为右子树树根下标,从树根(1)开始递归,依次输入当前下标对应的值,最后输出即可
后序遍历遵循“左右根”的顺序
AC代码
#include <iostream>
using namespace std;
const int N = 40;
int tree[N];
int n;
void find(int pos)
{
if(pos > n) return;
find(2 * pos); //左子树
find(2 * pos + 1); //右子树
cin >> tree[pos]; //根
}
int main()
{
cin >> n;
find(1);
for(int i = 1; i <= n ; i ++)
{
if(i != n) cout << tree[i] << " ";
else cout << tree[i] << endl;
}
return 0;
}
欢迎大家批评指正!!!