lunes, 11 de julio de 2011

Representación y manipulación de árboles: búsqueda y recorrido


Árbol binario
Un árbol binario es una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener más de dos hijos (de ahí el nombre "binario"). Si algún hijo tiene como referencia a null, es decir que no almacena ningún dato, entonces este es llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno.
La profundidad de un nodo es la cantidad de pasos que uno tiene que bajar desde la raíz para bajar a ello. El conjunto de nodos que tienen la misma profundidad entre ellos se llama un nivel.
 La altura de un nodo es la cantidad máxima de pasos necesarios para subir a ello desde una hoja, más uno.
 La profundidad de un árbol es la profundidad máxima de sus nodos.
La altura de un árbol es la altura de su raíz.

Balance de un árbol
El árbol AVL toma su nombre de las iniciales de los apellidos de sus inventores, Adelson-Velskii y Landis. Lo dieron a conocer en la publicación de un artículo en 1962: "An algorithm for the organization of information" ("Un algoritmo para la organización de la información").
Los árboles AVL están siempre equilibrados de tal modo que para todos los nodos, la altura de la rama izquierda no difiere en más de una unidad de la altura de la rama derecha o viceversa. Gracias a esta forma de equilibrio (o balanceo), la complejidad de una búsqueda en uno de estos árboles se mantiene siempre en orden de complejidad O(log n). El factor de equilibrio puede ser almacenado directamente en cada nodo o ser computado a partir de las alturas de los subárboles.
Para conseguir esta propiedad de equilibrio, la inserción y el borrado de los nodos se han de realizar de una forma especial. Si al realizar una operación de inserción o borrado se rompe la condición de equilibrio, hay que realizar una serie de rotaciones de los nodos.
 refernecias:

1 comentario: