# 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 inorden y calcular la suma de los nodos.
def inorden_sumar(nodo):
if nodo is None: # Caso base: si el nodo es nulo, no sumamos nada
return 0
# Recorrido en inorden: sumamos primero el subárbol izquierdo,
# luego el valor del nodo actual, y finalmente el subárbol derecho.
suma_izquierda = inorden_sumar(nodo.izquierdo)
suma_nodo_actual = nodo.valor
suma_derecha = inorden_sumar(nodo.derecho)
# Sumamos las partes y devolvemos el resultado.
return suma_izquierda + suma_nodo_actual + suma_derecha
# Llamamos a la función y mostramos el resultado.
suma_total = inorden_sumar(raiz)
print("La suma de todos los nodos del árbol es:", suma_total) # Debería imprimir: 28