2016-04-05 10 views
0

Ich versuche, einen Code zu schreiben, die 20 Elemente drucken jedesmal, wenn ich den Baum Trog gehen. Was ich bisher gemacht habe, macht es nicht richtig. Ich habe versucht, eine globale Variable (genannt flag), das jedes Mal, wenn ich drucke den Inhalt eines Knotens zu implementieren, erhöhe ich, dass variabel, aber es funktioniert nicht genau richtig. Ich habe auch eine Inorder-Baumsuche verwendet, um jedes Element aus dem Baum zu drucken. Diese ist das, was ich habe:Druckelemente von AVL-Baum

int inorder(Myprod a) 
{ 
int f=0; 
char resposta[1]; 
int i; 
int p; 


if(a != NULL) 
{ 

    inorder(a->left); 
    printf("%s\n",a->prod); 
    f++; 
    flag += f; 
    inorder(a->right); 


    if(flag == 20) 

    printf("Want to see more elements from tree ? (Y/N)\n"); 

    i = scanf ("%s" , resposta); 

    if (resposta[0] == 'N' && i == 1) 
    { 
     return 1; 
    } 

    flag = f = 0; 
    p = inorder(a); 
    if (p == 1) 
     return 1; 

    } 



return 0; 
} 

Wunsch Ausgang: 20 Elemente von Baum; Fragen Sie den Benutzer, ob er mehr Elemente vom Baum haben möchte; Nächste 20 Elemente; ...

Wie kann ich es richtig implementieren?

+0

Haben Sie lief es? Hat es geklärt? – t0mm13b

Antwort

0

lief einfach einen beliebigen DFS auf dem Baum und nach der ersten 20 Elemente speichern den Zeiger auf den Knoten zurückkehrt, wo Sie fertig sind. Wenn später weitere 20 Knoten gedruckt werden sollen, setzen Sie einfach Ihr DFS von dem Knoten fort, an dem Sie das letzte Mal beendet haben.

+0

@pkarcprzak Wie kann ich den Zeiger speichern? –