# 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