Árboles Binarios de Búsqueda en Java

22 11 2007

En estos días he tenido la necesidad de ver ciertas operaciones que se implementan el los árboles binarios de búsqueda (Binary Search Trees), y en este sitio encontré una implementación particularmente interesante, espero que les sea de utilidad.

En ciencias de la computación, un árbol binario de búsqueda es un árbol que tiene las siguientes propiedades:

  • Cada nodo tiene un valor
  • Se define un orden total sobre esos valores
  • El subárbol izquierdo de un nodo contiene valores menores o iguales que el valor de dicho nodo.
  • El subárbol derecho de un nodo contiene valores mayores o iguales que el valor de dicho nodo.

La ventaja más notable de los árboles binarios de búsqueda es que los algoritmos de ordenación y búsqueda relacionados como transversal inorden pueden ser muy eficientes.

Los árboles binarios de búsqueda son una estructura de datos fundamental usada para construir más estructuras de datos abstractas como conjuntos y arrays asociativos.
// BinarySearchTree class
//
// CONSTRUCTION: with no initializer
//
// ******************PUBLIC OPERATIONS*********************
// void insert( x ) --> Insert x
// void remove( x ) --> Remove x
// void removeMin( ) --> Remove minimum item
// Comparable find( x ) --> Return item that matches x
// Comparable findMin( ) --> Return smallest item
// Comparable findMax( ) --> Return largest item
// boolean isEmpty( ) --> Return true if empty; else false
// void makeEmpty( ) --> Remove all items
// ******************ERRORS********************************
// Exceptions are thrown by insert, remove, and removeMin if warranted

/**
* Implements an unbalanced binary search tree.
* Note that all “matching” is based on the compareTo method.
* @author Mark Allen Weiss
*/

Leer el resto de esta entrada »