#include <iostream>
using namespace std;
char a[52];
struct node {
char var;
node* parent;
node() {
parent = NULL;
}
};
node n[26];
void printLevel(node b[],int k) {
if (b[k].parent == NULL) {
cout << b[k].var << endl;
}
else {
cout << "-";
printLevel(b[k].parent, k);
}
}
int main() {
int num;
cin >> num;
for (int i = 0; i < num; i++) {
cin >> a[i];
}
for (int i = 0; i < num; i++) {
cout << a[i];
}
for (int i = 0; i < (num / 2) + 1; i++) {
n[i].var = 'A' + i;
}
for (int i = 1; i < num; i + 2) {
int parent;
int temp;
for (int j = 0; j < (num/2)+1; j++) {
if (n[j].var == a[i]) {
temp = a[i - 1];
parent = j;
}
}
for (int k = 0; k < (num / 2) + 1; k++) {
if (n[k].var == temp) {
n[parent].parent = &n[k];
}
}
}
for (int i = 0; i < (num / 2) + 1; i++)
{
printLevel(n, i);
}
return 0;
}
这是我的代码。输入将像......
8 A B A C B D B E
第一行是我想要多少输入,第二行是 奇数是父节点,偶数是前一个奇数的子节点。
我想要的输出是
A -B -C --D --E
所以我基本上想要用&#34; - &#34;来显示树的级别。 我不知道我在这里做错了什么帮助真的很感激。
答案 0 :(得分:0)
您需要执行BFS(级别顺序遍历),并在节点值之前添加级别号“ - ”。