当前位置:网站首页>二叉树的遍历
二叉树的遍历
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;
}
边栏推荐
猜你喜欢
随机推荐
小软件大作用 | 如何省时省力进行Gerber图层快速对比?
awk statistical average max min
工业相机CCD与CMOS
really time ntp service start command
How to add custom syntax to MySQL?
目标检测的发展与现状
The list of Kubernetes - watch mechanism
NLP技术为何在工业界这么卷?前沿案例解析来了
A complete cross-compilation environment records the shell scripts generated by peta
Switch node version and switch npm source tool
六月 致 -.-- -..- -
lds链接的 顺序问题
备忘录模式
[Sql brush topic] Query information data--Day1
Redis数据库—定义、特点、安装、如何启动与停止
我的四周年创作纪念日
运维就业现状怎么样?技能要求高吗?
MMDetection usage example: from entry to exit
Jmeter - Heap配置原因报错Invalid initial heap size: -Xms1024m -Xmx2048mError
Client Side Cache 和 Server Side Cache 的区别









