Error suma arboles c++

Iniciado por Josh13, 4 Mayo 2018, 20:21 PM

0 Miembros y 1 Visitante están viendo este tema.

Josh13

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.

MAFUS

Esta parte está mal:
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.