当前位置:网站首页>二叉树的遍历
二叉树的遍历
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;
}
边栏推荐
猜你喜欢
随机推荐
T+Cloud: A "Smart Company" for Building New Business Social Networks and Marketing Relationships
Finished product upgrade program
5G NR 笔记记录
How to manually download and install SAP Fiori tools - Extension Pack for Visual Studio Code
华为交换机:STP测试实验
ELECTRA:Pre-training Text Encoders as Discriminators Rather Than Generators
如何给MySQL添加自定义语法 ?
awk 统计差值记录
c sqlite...
迪赛智慧数——其他图表(主题河流图):近年居民消费、储蓄、投资意愿
基于YOLOV5行人跌倒检测实验
视频目标检测
TritonVM——基于Recursive STARK的虚拟机
The difference between Client Side Cache and Server Side Cache
The establishment of simple data cache layer
Force KouTi (5), the longest text string back
SOA面向服务架构:服务、服务实例、ARXML、服务接口调用以及各参与方
really time ntp service start command
zynq records
零基础做出高端堆叠极环图









