当前位置:网站首页>二叉树的遍历
二叉树的遍历
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;
}
边栏推荐
猜你喜欢
随机推荐
图片延迟加载、预加载
编译optimize源码实现过程
目标检测的发展与现状
百度智能云重庆工业互联网平台正式亮相,深耕重庆,辐射西南
Spark提交参数说明和常见优化
getBoundingClientRect
awk 统计平均 最大 最小值
MMDetection 使用示例:从入门到出门
带你了解数据分布式存储原理
使用.NET简单实现一个Redis的高性能克隆版(二)
ERC20转账压缩
How to monitor code cyclomatic complexity by refactoring indicators
c sqlite ... ...
Jmeter - Heap配置原因报错Invalid initial heap size: -Xms1024m -Xmx2048mError
Yuanguo chain game system development
zynq records
QT 小知识随记
The establishment of simple data cache layer
基于YOLOV5行人跌倒检测实验
华为WLAN技术:AP上线及相关模板的配置实验







