当前位置:网站首页>二叉树的遍历
二叉树的遍历
2022-08-04 19:37:00 【-JMY-】
题目描述
给出一个n个结点的二叉树,请求出二叉树的前序遍历,中序遍历和后序遍历。
输入
第一行有一个整数n(0<n<=26),表示二叉树有n个结点;
以下n行,每行第一个为一个大写字母表示结点的值,第i+1行的结点编号为i;后面为两整数,第一个表示该结点左孩子结点编号,第二个表示该结点右孩子的结点编号,如果该编号为0表示没有;(编号为1的结点是树的根)
输出
共三行,第一行为二叉树的前序遍历,第二行为中序遍历,第三行为后序遍历
样例输入
7 F 2 3 C 4 5 E 0 6 A 0 0 D 7 0 G 0 0 B 0 0
样例输出
FCADBEG ACBDFEG ABDCGEF
提示
样例对应的二叉树如图所示:
参考代码:
#include<bits/stdc++.h>
using namespace std;
int a[30][2],n,x,y;
char c,s[30];
void f1(int i){
cout<<s[i];
if(a[i][0]!=0)
f1(a[i][0]);
if(a[i][1]!=0)
f1(a[i][1]);
return;
}
void f2(int i){
if(a[i][0]!=0)
f2(a[i][0]);
cout<<s[i];
if(a[i][1]!=0)
f2(a[i][1]);
return;
}
void f3(int i){
if(a[i][0]!=0)
f3(a[i][0]);
if(a[i][1]!=0)
f3(a[i][1]);
cout<<s[i];
return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>c>>x>>y;
a[i][0]=x;
a[i][1]=y;
s[i]=c;
}
f1(1);
cout<<'\n';
f2(1);
cout<<'\n';
f3(1);
return 0;
}
边栏推荐
猜你喜欢
随机推荐
如何给MySQL添加自定义语法 ?
指静脉识别-matlab
工业相机CCD与CMOS
图片延迟加载、预加载
If it is test axi dma catch a few words here
MYSQL获取数据库的表名和表注释
如何推动乡村振兴的落地
Embrace the Cmake child is simple and practical, but inflexible
我的四周年创作纪念日
密码学系列之:PEM和PKCS7,PKCS8,PKCS12
IDEA 自动导入的配置(Auto import)
Client Side Cache 和 Server Side Cache 的区别
Internship: changed the requirements
污损指纹恢复与识别
Dragoma(DMA)元宇宙系统开发
【最新资讯】2022下半年软考新增2个地区公布报名时间
百度智能云重庆工业互联网平台正式亮相,深耕重庆,辐射西南
The establishment of simple data cache layer
[Latest Information] 2 new regions will announce the registration time for the soft exam in the second half of 2022
SAP UI5 的初始化过程