26-10-2016, 12:53 AM
En el siguiente método se crea un atributo temporal y protegido para calcular el número de nodos que tiene un árbol binario. Este atributo es de carácter temporal porque no se actualiza con otros métodos como inserción o eliminación. Si quisiéramos eliminar el atributo luego de utilizarlo y obtener la respuesta requerida por el método.. cual sería el cambio a realizar en el mismo.
Código:
la función recursiva n_nodos() crea un atributo al árbol self.__n donde sumará
# los valores de los nodos a través del recorrido, al final retorna el valor del atributo
def n_nodos (self, raiz = None):
if (raiz == None):
self.__n = 0
if (self.__raiz == None):
return self.__n
raiz = self.__raiz
self.__n = self.__n + 1
if (raiz.hizq != None):
self.n_nodos(raiz.hizq)
if (raiz.hder != None):
self.n_nodos(raiz.hder)
return self.__n