试图制作树算法

时间:2016-08-07 07:01:30

标签: c++ algorithm

#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;来显示树的级别。 我不知道我在这里做错了什么帮助真的很感激。

1 个答案:

答案 0 :(得分:0)

您需要执行BFS(级别顺序遍历),并在节点值之前添加级别号“ - ”。