Preorder Traversierung von Bäumen

stEEdZ

Mitglied
Hallo allerseits,
bin hier gerade am lernen und steh leider etwas auf dem Schlauch.

Es geht um eine Preorder Traversierung:
Code:
typedef struct node {
        int value;
        struct node * left;
        struct node * right;
}Node;

void evaluate(int value)
{
     printf("%d",value); //nur für Test
}

void traverse(Node* subtree)
{
     evaluate(subtree->value);
     
     if(subtree->left != 0) traverse(subtree->left);
     if(subtree->right != 0) traverse(subtree->right);
}


Verstehe alles soweit ganz gut, auch den Code..
Was ich leider gerade überhaupt nicht verstehe ist, wie müsste dazu nun die Main-Funktion aussehen? :confused:

Im Anhang ist der dazugehörige Baum!

vielen Dank für eure Hilfe
mfg
stEEdZ
 

Anhänge

  • baum.jpg
    baum.jpg
    3,9 KB · Aufrufe: 386
Hallo sheel,

zunächst einmal danke für die Antwort! :)

Ok, das is mir soweit klar...

Aber davor muss ich doch erstmal irgendwo den Baum in nem Array oder irgendwas haben.
Dann noch die jeweiligen Wurzeln angeben oder nich?

Sowas wie:
Code:
Node * root = h;  //für die Wurzel?

Und dann noch irgendwie die Kinder mit (2n) und (2n+1)?

Du merkst ich komm grad gar nich klar :(

Danke im Vorraus
mfg
stEEdZ
 
Hi.
Aber davor muss ich doch erstmal irgendwo den Baum in nem Array oder irgendwas haben.
Nein. Du müßtest den Baum als Baum haben.
Dann noch die jeweiligen Wurzeln angeben oder nich?
Ein Baum hat genau eine Wurzel - so wie üblich.

Du müßtest den Baum erstmal bauen. Z.B.
C++:
Node *root = new Node();
root->value = 5;

root->left = new Node();
root->left->value = 3;
root->right = new Node();
root->right->value = 6;
Zum Schluß natürlich ordentlich mit delete den Speicher wieder freigeben...

Du solltest dir dafür Funktionen schreiben, die einen neuen Knoten erstellen und ihn initialisieren. Und eine Funktion den (Teil-)Baum zu zerstören und alle Knoten darin freizugeben.

Gruß
 
Zurück