Albero binario
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.
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.
#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++; } }
Risposte
Ok, ho risolto da solo.
Avevo dimenticato di scrivere g=0 prima del ciclo while (k<10)...
Avevo dimenticato di scrivere g=0 prima del ciclo while (k<10)...