树的后根遍历(孩子链表法)
题目描述
根据树的孩子链表表示法构建一棵树,并输出树的后根遍历
下标位置从0开始
输入
第一行输入两个参数,第一个参数n表示树有n个结点,第二个参数r表示根结点的数组下标
接着n行,每行先输入一个结点的数值(用单个字母表示),再输入结点的孩子的下标,最后以-1结尾
如果该结点没有孩子,则一行只输入结点的数值和-1
输出
只有一行输出,树的后根遍历结果
输入
10 4
A 3 5 -1
B -1
C 6 -1
D -1
R 0 1 2 -1
E -1
F 7 8 9 -1
G -1
H -1
K -1
样例输出
DEABGHKFCR
//从左往右打开节点,若为-1,则输出
#include <iostream>
using namespace std;
struct node {
char c;
int child[10];
};
void Print(node N[], int r) {
for (int i = 0; N[r].child[i] != -1; i++)
Print(N, N[r].child[i]);
cout << N[r].c;
}
int main() {
int n, m;
cin >> n >> m;
node N[n];
for (int i = 0; i < n; i++) {
cin >> N[i].c;
for (int j = 0;; j++) {
cin >> N[i].child[j];
if (N[i].child[j] == -1)
break;
}
}
Print(N, m);
}