2016-08-07 4 views
0
#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 

처럼 STH 될 것입니다. "-" 나도 몰라 내가 여기에 약간의 도움이 정말 될 것 잘못하고있는 무슨

내가 원하는 출력

 
A 
-B 
-C 
--D 
--E 

이다 그래서 나는 기본적으로 트리의 수준을 보여주고 싶은 고맙습니다.

+0

표시된 입력에 대해 실제 출력은 무엇입니까? 디버거에서 한 줄씩 코드를 단계별로 실행 해 보았습니까? –

+0

실제로 코드를 실행할 때 출력이 없습니다 ... 그냥 멈 춥니 다. – Redrock

답변

0

BFS (레벨 순회)를 수행하고 노드 값 앞에 "-"레벨 번호를 추가해야합니다.

관련 문제