TAD ArbolBinarioBusqueda:
Estructura Nodo:
Valor
Nodo Izquierdo
Nodo Derecho
Método CrearNodo(valor):
nuevoNodo = Nuevo Nodo
nuevoNodo.Valor = valor
nuevoNodo.Izquierdo = Nulo
nuevoNodo.Derecho = Nulo
Devolver nuevoNodo
Método Insertar(arbol, valor):
Si arbol es Nulo:
Devolver CrearNodo(valor)
Si valor < arbol.Valor:
arbol.Izquierdo = Insertar(arbol.Izquierdo, valor)
Sino si valor > arbol.Valor:
arbol.Derecho = Insertar(arbol.Derecho, valor)
// Si el valor ya existe, no hacer nada (no duplicados en ABB)
Devolver arbol
Método Buscar(arbol, valor):
Si arbol es Nulo o arbol.Valor es igual a valor:
Devolver arbol
Si valor < arbol.Valor:
Devolver Buscar(arbol.Izquierdo, valor)
Sino:
Devolver Buscar(arbol.Derecho, valor)
Método Eliminar(arbol, valor):
Si arbol es Nulo:
Devolver arbol
Si valor < arbol.Valor:
arbol.Izquierdo = Eliminar(arbol.Izquierdo, valor)
Sino si valor > arbol.Valor:
arbol.Derecho = Eliminar(arbol.Derecho, valor)
Sino:
// Caso 1: Nodo con un solo hijo o sin hijos
Si arbol.Izquierdo es Nulo:
temp = arbol.Derecho
Liberar(arbol)
Devolver temp
Sino si arbol.Derecho es Nulo:
temp = arbol.Izquierdo
Liberar(arbol)
Devolver temp
// Caso 2: Nodo con dos hijos
temp = ObtenerMinimo(arbol.Derecho)
arbol.Valor = temp.Valor
arbol.Derecho = Eliminar(arbol.Derecho, temp.Valor)
Devolver arbol
Método ObtenerMinimo(arbol):
Mientras arbol.Izquierdo no sea Nulo:
arbol = arbol.Izquierdo
Devolver arbol
Fin TAD ArbolBinarioBusqueda