Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Josh13 en 4 Mayo 2018, 20:21 pm



Título: Error suma arboles c++
Publicado por: Josh13 en 4 Mayo 2018, 20:21 pm
Hola, perdón , tengo un problema en un ejercicio de suma de arboles binarios de búsqueda.

Este es el enunciado : Codificar una función entera en C++ que devuelva como resultado la suma de las claves impares contenidas en nodos con dos hijos.

Y este es mi código:

int sumaClavesImparesDosHijo (pNodoArbol &nodo) {
   int resul;
   if(nodo != NULL){
   if(nodo->clave %2 != 0){
      if((nodo->iz != NULL) && (nodo->de != NULL)){
         resul += nodo->clave;
      }
      resul = sumaClavesImparesDosHijo(nodo->iz) +
                                                                   sumaClavesImparesDosHijo(nodo->de);

   }
   }
   return resul;
}

int Arbol::sumaClavesImparesDosHijos () {
   int resul = 0;
   resul = sumaClavesImparesDosHijo(raiz);
   return resul;
}

Y la suma me da 1877928545 , cosa que no tiene sentido. Tendría que dar 128.


Título: Re: Error suma arboles c++
Publicado por: MAFUS en 4 Mayo 2018, 22:13 pm
Esta parte está mal:
Código:
 resul = sumaClavesImparesDosHijo(nodo->iz) + sumaClavesImparesDosHijo(nodo->de);

Sí ya haces la suma dentro del if no debes cambiar otra vez resul.

Sólo debes llamar la función con los nodos iz y de si estos existen, ya se encargará la primera parte de la función de realizar la suma.