2016-08-07 18 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 

,其中第一行是多少我輸入想要和第二行是 奇數是父節點,和偶數號碼的子節點之前的奇數。

,我想輸出是

 
A 
-B 
-C 
--D 
--E 

所以我基本上要顯示與樹的水平「 - 」 我不知道我在做什麼錯在這裏一些幫助將是非常讚賞。

+0

對於顯示的輸入,* actual *輸出是什麼?你有沒有試過在調試器中逐行執行代碼? –

+0

當我運行代碼時,實際上沒有輸出......它只是停止 – Redrock

回答

0

您需要執行BFS(級別順序遍歷),並在節點值之前加上「 - 」的級別編號。