RE: Arboles Balanceados
Los árboles balanceados o binarios tienen multitud de aplicaciones en diferentes áreas del conocimiento. En desarrollo informático son la base para mantener un sistema de base de datos perfectamente organizado por índices o claves de búsqueda. Existen diferentes tipos de organizar datos en una tabla (de datos valga la redundancia).
-LIFO (Last Input First Output) que es el que se utiliza habitualmente en el Stack de memoria por ejemplo en Asesembler no esta permitido realizar una asignación de valor entre un registro de procesador y un direccionador de memoria (P. Ej. MOV CS,AX, no está permitido). Gracias a esta particularidad podemos realizar lo siguiente:
mov ax, ;un valor de direccionamoento de memoria
push ax ;lo subimos a la pila
pop bp : lo asignamos al base pointer desde la pila.
...Truco Hecho...
-FIFO (Fisrt Input First Output). utilizado por los apuntadores de documentos en cola de impresión por ejemplo.
-Listas Encadenadas. Son aquellas en las que todo elemento conoce la posición de sus colaterales y es de gran utilidad en editores de texto. P. Ejemplo. Insertar una nueva linea de texto entre un número indeterminadamente grande de lineas es tan sencillo cómo poner la nueva línea al final de la tabla y reconstruir los punteros de las lineas anterior-siguiente que le correspondan (Otra forma sería hacer un bucle desde la línea de inserción hasta la última y desplazar toda la matriz (Puede ser demasiado lento).
-Árboles binarios balanceados. Con ellos podemos conseguir poner cada dato (que después deseemos buscar), prácticamente en el sitio que le corresponde. La técnica, aunque sencilla, resulta a menudo difícil de entender por lo abstracto. El árbol binario es una estructura de datos cuyas ramas crecen de forma organizada a medida que se le agregan items (nodos en nuestro caso). Si la estructuración del algoritmo es correcta siempre podemos asegurar que cada nodo tiene, en su nodo izquierdo un valor menor y en su nodo derecho un valor mayor. A su vez en nodo padre siempre debe de ser mayor que el apuntado. esto permite establecer reglas dicotómicas mediante las que en la primera búsqueda de un dato (siempre sobre el nodo raíz), ya descartamos la mitad del árbol (con todos los nodos que contiene, en la segunda la mitad de la mitad y así sucesivamente, por lo que aseguramos qué en tan sólo 8 consultas de nodos hemos encontrado el dato búscado (o no). Esta técnica es la utilizada por los índices de las bases de datos.
Yo personalmente lo utilizo en sustitución de las colecciones y diccionariois que ofrece Microsoft ya qué además de ser más rápida, me devuelve toda la información deseada y de momento no le he encontrado limitación. Puede servir para mantener las opciones de preferencia de usuario en vez de grabarlas en el registro de Windows ya que, entre otras cosas, nos permite trnasportarlas a otro equipo con sólo copiar el fichero de claves (El registro de windows es algo más engorroso transportarlo).
Tambien le he encontrado utilidad en la resolución de determinantes, ya que me permite conocer la posición de un dato en una matriz (por enorme que sea) con un mínimo esfuerzo y en un tiempo record.
En fin espero que todo este rollo os sea de tanta utilidad como la clase enviada que entre otras cosas se puede transformar en una DLL casi como está.
Un cordial saludo.
-Acalanto-</TR>