Ein Baum ist eine Rekursive DatenStruktur. In deinem Beispiel, jedes Element hat ein eigenes Wert und noch 3 , 2 Kinder und 1 Eltern (Nur nuch UrEltern
)
Ich wurde ein Element so Deklatieren :
Zitat:
struct tnode {
int Wert ; //beispeil
int Count;
struct tnode *Vater;
struct tnode *Links;
struct tnode *Rechts;
};
Ein Element hinzufühgen:
Zitat:
struct tnode *talloc(void)
{
return (struct tnode*)malloc(sizeof(struct tnode));
}
struct tnode *addtree(struct tnode *p,int w,struct tnode *Vater_)
{
if (p==NULL)
{
p = talloc();
p->Wert = w;
p->Count = 1;
p->Links = p->Rechts = NULL;
p->Vater = Vater_;
}
else
if (w=p->Wert) p->Count++;
else
if (w<p->Wert) p->Left = addtree(p->left, w, p);
else p->Rechts = addtree(p->Rechts,w, p);
return p;
}
Ein element Finden:
Zitat:
BOOL findnode(struct tnode *gefundene,struct tnode *anfangsnode, int w)
{
if (anfangsnode = NULL)
return FALSE;
if (anfangsnode->Wert == w)
/*GEFUNDEN*/
{
gefundene = anfangsnode;
return TRUE;
}
else
if (anfangsnode->Wert < w)
return findnode(gefundene, anfangsnode->Links,w);
else return findnode(gefundene, anfangsnode->Rechts,w);
}
So kannst du einfach zuerst finden was du willst und dann liest einfach wer Vater und Kinder sind.