本专栏持续输出数据结构题目集,欢迎订阅。
题目
请编写程序,根据给定信息构建森林,并找出给定结点所在树的根结点。
输入格式:
输入首先给出一个正整数 n(0<n≤20),随后 n 行,第 i 行(0≤i<n)对应数组第 i 个元素对应的字符及其父结点的数组下标,其间以空格分隔。其中字符为大写英文字母,根结点的父结点为 -1。最后一行给出一个待查询的数组下标 x(0≤x<n)。
输出格式:
在一行中输出数组第 x 个元素所在树的根结点的数组下标 r,格式为
root index = r
输入样例:
12
D 3
E 3
F 5
A -1
G 5
B -1
J 8
H 10
I 10
K 1
C -1
L 3
9
输出样例:
root index = 3
代码
#include <stdio.h>
#define MAX_N 20
int main() {
int n;
scanf("%d", &n);
int parent[MAX_N];
char data[MAX_N];
// 读取输入数据
for (int i = 0; i < n; i++) {
scanf(" %c %d", &data[i], &parent[i]);
}
int x;
scanf("%d", &x);
// 查找根节点
int current = x;
while (parent[current] != -1) {
current = parent[current];
}
printf("root index = %d\n", current);
return 0;
}
2156

被折叠的 条评论
为什么被折叠?



