题解(A554)
2024-03-29 19:28:02
发布于:北京
1阅读
0回复
0点赞
#include <iostream>
using namespace std;
// 定义树的结构体
struct TREE{
int zuo; // 左子节点
int you; // 右子节点
// node作为下标
};
TREE tree[110]; // 存储树的数组,下标从1开始
// 递归遍历树
void TREES(int s, int i){
if (s == 1) {
cout << i << ' '; // 先序遍历
}
if (tree[i].zuo != 0) {
TREES(s, tree[i].zuo); // 递归左子树
}
if (s == 2) {
cout << i << ' '; // 中序遍历
}
if (tree[i].you != 0) {
TREES(s, tree[i].you); // 递归右子树
}
if (s == 3) {
cout << i << ' '; // 后序遍历
}
}
int main() {
int n;
cin >> n; // 输入节点数量
// 读入每个节点的信息
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
cin >> tree[x].zuo >> tree[x].you; // 输入每个节点的左右子节点
}
TREES(1, 1); // 先序遍历
cout << endl;
TREES(2, 1); // 中序遍历
cout << endl;
TREES(3, 1); // 后序遍历
cout << endl;
return 0;
}
这里空空如也
有帮助,赞一个