完全二叉树的后序遍历转层序遍历

因为是完全二叉树,所以可以用数组模拟,原理同树状数组。

后序遍历倒过来就是根-右-左。数据结构课上也是这样建树的。

#include <bits/stdc++.h>
#define sc(x) scanf("%d", &(x))
#define pr(x) printf("%d ", x)
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const ll mod = 1e9 + 7;
int post[N], a[N];
int n, p = 1;
void build(int i) {
    if (p > n || i > n) return;
    a[i] = post[p++];
    build(i * 2 + 1);
    build(i * 2);
}
int main() {
    sc(n);
    for (int i = 0; i < n; ++i) sc(post[n - i]);
    build(1);
    for (int i = 1; i <= n; ++i) pr(a[i]);
    return 0;
}

比赛的时候去看后面一题了。算是策略不对吧。

坦白说天梯赛几乎没练,但也觉得分数对得起团队了。

算法竞赛之路 文章被收录于专栏

整理、记录算法竞赛的好题

全部评论
感谢思路
点赞 回复 分享
发布于 2021-01-09 18:02

相关推荐

评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务