ej 9

ej 9

de Bruno Stefano Lombardo Palleiro -
Número de respuestas: 2

Buenas, se me ocurrió esta solución y quería saber si es correcta.Gracias.



 int mayorAmplitud ( AG a ){


   int resu;


      if(a==NULL)


           resu=0;


      else{


           int ampli_hermanos=1+mayorAmplitud(a->sH);


           int ampli_hijo=mayorAmplitud(a->pH);


          if(ampli_hermanos<ampli_hijo)


               res=ampli_hijo;


          else


              res=ampli_hermanos;


    }


    return res;

}

En respuesta a Bruno Stefano Lombardo Palleiro

Re: ej 9

de Matias Richart -

Hola. 

Me parece que no.

Por lo que veo estas sumando hermanos con hijos, lo que no te va a dar el resultado correcto. Es decir, dependiendo cual sea mayor a veces la función retorna la cantidad de hijos y a veces la de hermanos. Eso genera que sumes hermanos de distintos nodos.

Imaginate este caso:

O

|

O--O--O

            |

             O--O--O

El resultado debería ser 3, pero tu implementación devuelve 5.

Te sugiero que consideres contar la cantidad de hermanos de un nodo con una función auxiliar que solo haga eso.

Saludos