树和二叉树 第十四讲(Level3)
描述
给出一个 n 个结点的二叉树,请求出二叉树的前序遍历,中序遍历和后序遍历。
【样例解释】
样例对应的二叉树如图所示:
输入描述
第一行有一个整数 n (0<n≤26),表示二叉树有 n 个结点;
以下 n 行,每行第一个为一个大写字母表示结点的值,第 i+1 行的结点编号为 i。
后面为两整数,第一个表示该结点左孩子结点编号,第二个表示该结点右孩子的结点编号,如果该编号为 0 0 表示没有;(编号为 1 的结点是树的根)
输出描述
共三行,第一行为二叉树的前序遍历,第二行为中序遍历,第三行为后序遍历;
样例输入 1
7 F 2 3 C 4 5 E 0 6 A 0 0 D 7 0 G 0 0 B 0 0
样例输出 1
FCADBEG ACBDFEG ABDCGEF
提示
【样例解释】
样例对应的二叉树如图所示:
#include <bits/stdc++.h>
using namespace std;
struct Node {
char data;
int left;
int right;
} Node[50];
void a(int f) {
if (f != 0) {
cout << Node[f].data;
a(Node[f].left);
a(Node[f].right);
}
}
void b(int f) {
if (f != 0) {
b(Node[f].left);
cout << Node[f].data;
b(Node[f].right);
}
}
void c(int f) {
if (f != 0) {
c(Node[f].left);
c(Node[f].right);
cout << Node[f].data;
}
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> Node[i].data >> Node[i].left >> Node[i].right;
a(1);
cout << endl;
b(1);
cout << endl;
c(1);
cout << endl;
return 0;
}