Albero binario

Messaggioda SalvatCpo » 20/08/2018, 17:07

Come mai la funzione mi restituisce 4 anziché 3?
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++;
   }
}
SalvatCpo
Average Member
Average Member
 
Messaggio: 161 di 726
Iscritto il: 30/12/2017, 17:55

Re: Albero binario

Messaggioda SalvatCpo » 20/08/2018, 18:24

Ok, ho risolto da solo.
Avevo dimenticato di scrivere g=0 prima del ciclo while (k<10)...
SalvatCpo
Average Member
Average Member
 
Messaggio: 162 di 726
Iscritto il: 30/12/2017, 17:55


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite