Premetto che non ho studiato come gestire gli alberi binari in c++, è solo un esercizietto che mi sono inventato.
Ho studiato gli alberi solo come argomento teorico.
In pratica ho costruito un albero binario avente come radice l'elemento lista[3], il che è facilmente intuibile.
- Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct record {
int ls; //link di concatenamento a sx (figlio sx)
int ld; //figlio dx
} record;
int cercaradice (record v[10]);
int main ()
{
record lista[10];
lista[3].ls=6;
lista[3].ld=9;
lista[4].ld=8;
lista[6].ls=1;
lista[6].ld=2;
lista[9].ls=0;
lista[9].ld=4;
lista[0].ls=5;
lista[0].ld=7;
printf ("La radice è: %d\n", cercaradice (lista));
system ("PAUSE");
return 0;
}
int cercaradice (record v[10])
{
int i=0, g=0, k=0;
int radice;
while (i<10)
{
k=0;
while (k<10)
{
if ((v[k].ls==i) || (v[k].ld==i))
{
g++;
}
k++;
}
if (g==0)
{
radice=i;
return radice;
}
i++;
}
}