Quick actions

cmd+k|ctrl+k

Navigation

Languages

5_15_Arboles_desafio_3

Snippet info

Language

Python

Visibility

public

Author

jorgetoto2006new

Created

2024-11-04T03:14:41.98079Z

Updated

2024-11-04T03:14:41.98079Z

# Definimos la clase Nodo que representa cada nodo del árbol.
class Nodo:
    def __init__(self, valor):
        self.valor = valor
        self.izquierdo = None
        self.derecho = None

# Construimos un árbol binario con números enteros en los nodos.
# Ejemplo de árbol:
#         1
#        / \
#       2   3
#      / \ / \
#     4  5 6  7
raiz = Nodo(1)
raiz.izquierdo = Nodo(2)
raiz.derecho = Nodo(3)
raiz.izquierdo.izquierdo = Nodo(4)
raiz.izquierdo.derecho = Nodo(5)
raiz.derecho.izquierdo = Nodo(6)
raiz.derecho.derecho = Nodo(7)

# Implementamos la función para recorrer el árbol en postorden y encontrar el valor máximo.
def postorden_max(nodo):
    if nodo is None:  # Caso base: si el nodo es nulo, devolvemos un valor muy bajo.
        return float('-inf')
    
    # Recorrido en postorden: primero el subárbol izquierdo, luego el derecho, y luego el nodo actual.
    max_izquierda = postorden_max(nodo.izquierdo)
    max_derecha = postorden_max(nodo.derecho)
    max_actual = nodo.valor
    
    # Devolvemos el máximo entre los tres valores.
    return max(max_izquierda, max_derecha, max_actual)

# Llamamos a la función y mostramos el resultado.
valor_maximo = postorden_max(raiz)
print("El valor máximo en el árbol es:", valor_maximo)  # Debería imprimir: 7
INFO