天梯赛 L2-035 完全二叉树的层序遍历 (25 分)
二叉树的遍历主要有三种:
(1)先(根)序遍历(根左右)
(2)中(根)序遍历(左根右)
(3)后(根)序遍历(左右根)
举个例子:
先(根)序遍历(根左右):A B D H E I C F J K G
中(根)序遍历(左根右) : D H B E I A J F K C G
后(根)序遍历(左右根) : H D I E B J K F G C A
模拟
#include <bits/stdc++.h>
using namespace std;
int n,a[100];
void dfs(int u){
int l=u*2+1;
int r=u*2+2;
if(l<n)dfs(l);
if(r<n)dfs(r);
cin>>a[u];
}
int main()
{
cin>>n;
dfs(0);
for(int i=0;i<n;++i){
if(i!=n-1)cout<<a[i]<<" ";
else cout<<a[i];
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n;
class node
{
public :
int l,r,w;
}ns[100];
void hou(int u)
{
if(ns[u].l!=0)hou(ns[u].l);
if(ns[u].r!=0)hou(ns[u].r);
cin>>ns[u].w;
}
int main()
{
cin>>n;
for(int i=1;i<=n;++i)
{
if(i*2<=n)ns[i].l=i*2;
if(i*2+1<=n)ns[i].r=i*2+1;
}
hou(1);
for(int i=1;i<=n;++i)
{
if(i!=n)cout<<ns[i].w<<" ";
else cout<<ns[i].w;
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
class node
{
public :
int l,r,w;
}ns[100];
int n;
void hou(int u)
{
if(u*2<=n)hou(u*2);
if(u*2+1<=n)hou(u*2+1);
cin>>ns[u].w;
}
int main()
{
cin>>n;
hou(1);
for(int i=1;i<=n;++i)
{
if(i!=n)cout<<ns[i].w<<" ";
else cout<<ns[i].w;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具