L2-035 完全二叉树的层序遍历
题目 L2-035 完全二叉树的层序遍历
思路分析
代码实现
#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 网红点打卡攻略
💬 评论