[C] Binär-Baum Wurzel festlegen
Ok, folgendes Problem:
Ich habe in C die Datenstruktur eines binären Baumes wie folgt gegeben:
Code:
typedef struct _tree {
int v;
struct _tree *left , *right, *parent;
}TreeRec, *Tree;
*left und *right zeigen dabei stets auf den linken/rechten Knoten des aktuellen Knotens und *parent auf den Vorgänger des Knotens (sofern er existiert).
Zudem eine Funktion, die einen Baum initialisiert/konstruiert:
Code:
Tree cons(int v, Tree tl , Tree tr) {
Tree tmp;
tmp =(Tree) malloc(sizeof(TreeRec));
if(tmp == NULL) {printf("{cons} Memory full\n");}
else {
tmp ->v = v;
tmp ->left = tl;
tmp ->right = tr;
tmp ->parent = NULL;
if(tl) {tl->parent = tmp;} //ist der linke Teilbaum!=NULL, so wird tmp als sein Parent gesetzt
if(tr) {tr->parent = tmp;}// analog
}
return tmp;
}
Mein Problem dabei ist, dass ich gerne eine Struktur *root definieren möchte, die stets auf den Wurzelknoten des Baums zeigt. Allerdings habe ich absolut keine Ahnung, wie ich root in diesem Fall definieren müsste, damit das klappt.
Ich hoffe, jemand kann mir bei meinem Problem helfen.
EDIT: Ich möchte darauf aufbauend einen Algorithmus schreiben, der einen Baum rotiert, um die Eigenschaften eines AVL-Baumes wiederherzustellen. Dabei muss in einigen Fällen auch der Wurzelknoten ausgetauscht werden.