传统题 1000ms 256MiB

二叉树的序遍历

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

求一棵二叉树的前序遍历,中序遍历和后序遍历

输入格式

第一行一个整数 nn,表示这棵树的节点个数。接下来 nn 行每行 22 个整数 LLRR
ii行的两个整数 LiL_iRiR_i 代表编号为 ii 的节点的左儿子编号和右儿子编号。

输出格式

输出一共三行,分别为前序遍历,中序遍历和后序遍历。编号之间用空格隔开。

样例

输入 #1

5
2 3
4 5
0 0
0 0
0 0

输出 #1

1 2 4 5 3
4 2 5 1 3
4 5 2 3 1

数据范围与提示

n100n \le 100,默认结点 11 为树根。

#include<bits/stdc++.h>
using namespace std;

int n, d[100005], ans;
vector<int> v[100005];  //开了100005行

void dfs(int x, int xu){
	if(xu == 1) cout << x << ' ';
	if(v[x][0]) dfs(v[x][0], xu);
	if(xu == 2) cout << x << ' ';
	if(v[x][1]) dfs(v[x][1], xu);
	if(xu == 3) cout << x << ' ';
}
int main(){
	cin >> n;
	for(int i=1; i<=n; i++){
		int x, y;
		cin >> x >> y;
		v[i].push_back(x);  //把x加到i后面
		v[i].push_back(y);  //把y加到i后面
	}
	
	dfs(1, 1);
	cout << endl;
	dfs(1, 2);
	cout << endl;
	dfs(1, 3);
	return 0;
}

【L2-第38课】-树图的复习.2025.04.05

未认领
状态
已结束
题目
11
开始时间
2025-4-5 0:00
截止时间
2025-4-13 23:59
可延期
24 小时