Estoy tratando de escribir una función que cuente el número de nodos de un árbol de búsqueda binaria. Sin embargo, obtengo un error cuando ejecuto esa función. Este es el error: el objeto 'NoneType' no tiene ningún atributo 'correcto'. El error es para la línea p = p.right.

Avíseme si se proporcionarán más datos.

Aquí está la función:

def countelements(self, root):
    stack=[]
    p=root
    count=0
    while p!=None:
        stack.append(p)
        p=p.left
        count=count+1
    while (len(stack)>0):
        p=stack.pop()
        p=p.right
        while p!=None:
            p=p.left
            stack.append(p)
            count=count+1
            
    return count
-2
Amit 16 ago. 2020 a las 18:37

2 respuestas

La mejor respuesta

Cuando trabaja con estructuras de datos recursivas, como un árbol binario, a menudo desea utilizar la recursividad.

def count_elements(root):
    if root is not None:
        left = count_elements(root.left)
        right = count_elements(root.right)
        return left + right + 1  # +1 for root itself
    else:
        return 0
0
Tomáš Hons 16 ago. 2020 a las 16:01

No he pensado en su lógica central, pero la fuente del problema de por qué hay un None dentro de su pila debe ser el bucle interno (consulte el comentario en línea a continuación).

        while p!=None:
            p=p.left # But what if p.left is None?
            stack.append(p)
            count=count+1
0
Aaron 16 ago. 2020 a las 15:46