# Definimos la clase Nodo que representa cada nodo del árbol.
class Nodo:
def __init__(self, valor):
self.valor = valor # El valor que almacena el nodo.
self.izquierdo = None # Puntero al hijo izquierdo, inicialmente None.
self.derecho = None # Puntero al hijo derecho, inicialmente None.
# Implementamos una función para insertar un valor en el árbol de búsqueda binaria.
def insertar(nodo, valor):
if nodo is None: # Si el nodo actual es None, significa que hemos encontrado un lugar vacío para insertar.
return Nodo(valor) # Creamos un nuevo nodo con el valor y lo devolvemos como nuevo nodo.
# Comparamos el valor que queremos insertar con el valor del nodo actual.
if valor < nodo.valor:
# Si el valor es menor, lo insertamos en el subárbol izquierdo.
nodo.izquierdo = insertar(nodo.izquierdo, valor)
elif valor > nodo.valor:
# Si el valor es mayor, lo insertamos en el subárbol derecho.
nodo.derecho = insertar(nodo.derecho, valor)
# Devolvemos el nodo actual, ya que hemos actualizado su subárbol izquierdo o derecho.
return nodo
# Función para buscar un valor en el árbol de búsqueda binaria.
def buscar(nodo, valor):
if nodo is None: # Si el nodo actual es None, hemos llegado al final del camino y no encontramos el valor.
return False # Devolvemos False, indicando que el valor no está en el árbol.
if nodo.valor == valor: # Si el nodo actual tiene el valor buscado.
return True # Devolvemos True, indicando que hemos encontrado el valor.
# Decidimos si buscamos en el subárbol izquierdo o derecho.
if valor < nodo.valor:
return buscar(nodo.izquierdo, valor) # Buscamos en el subárbol izquierdo si el valor es menor.
else:
return buscar(nodo.derecho, valor) # Buscamos en el subárbol derecho si el valor es mayor.
# Construimos el árbol de búsqueda binaria con un conjunto de números únicos.
valores = [15, 10, 20, 8, 12, 17, 25] # Conjunto de números que queremos insertar en el ABB.
raiz = None # Empezamos con un árbol vacío.
# Insertamos cada valor en el árbol, creando el ABB.
for valor in valores:
raiz = insertar(raiz, valor)
# Probamos la función de búsqueda con un número dado.
numero_a_buscar = 17 # Número que queremos buscar en el árbol.
resultado = buscar(raiz, numero_a_buscar)
# Mostramos el resultado de la búsqueda.
if resultado:
print(f"El número {numero_a_buscar} existe en el árbol.") # Si se encuentra el número, imprimimos este mensaje.
else:
print(f"El número {numero_a_buscar} no existe en el árbol.") # Si no se encuentra, imprimimos este mensaje.