L2-035 完全二叉树的层序遍历

题目 L2-035 完全二叉树的层序遍历

image-21b991cd

思路分析

代码实现

#include<bits/stdc++.h>

using namespace std;

#define int long long

#define endl '\n'

using ll = long long;

using ull = unsigned long long;

using PII = pair<int,int>;

using Pll = pair<ll,ll>;

int dx[4]= {-1,0,1,0},dy[4]= {0,1,0,-1};

const int inf = 0x3f3f3f3f;

priority_queue<int> pq;

multiset<int> s;

vector<int> post;

vector<int> level;

int n;

int idx=1;

void build_from_post(int root){

	if(root>n)	return;

	build_from_post(2*root);

	build_from_post(2*root+1);

	level[root]=post[idx++];

}

void build_from_pre(int root){

	if(root>n)	return;

	level[root]=post[idx++];

	build_from_post(2*root);

	build_from_post(2*root+1);

}

void build_from_in(int root){

	if(root>n)	return;

	build_from_post(2*root);

	level[root]=post[idx++];

	build_from_post(2*root+1);

}

signed main() {

	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

	cin>>n;

	post.resize(n+1);

	level.resize(n+1);

	for(int i=1;i<=n;i++){

		cin>>post[i];

	}

	build_from_post(1);

	for(int i=1;i<=n;i++){

		if(i>1)	cout<<" ";

		cout<<level[i];

	}

	return 0;

}

同类题型

视频讲解


⬅️ L2-034 口罩发放 🏠 00-天梯赛 ➡️ L2-036 网红点打卡攻略