ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Arboles AVL


Enviado por   •  17 de Julio de 2015  •  762 Palabras (4 Páginas)  •  167 Visitas

Página 1 de 4

Consideraciones sobre la altura de los nodos

Como vimos en la definición del tipo abstracto para nodos de árboles AVL, se necesitará tener acceso a la altura cada nodo del árbol en tiempo constante. Dado que una función para hallar la altura de un nodo dado en un árbol tendrá un tiempo de ejecución de O(log(n)) peor caso, no nos queda otra alternativa que almacenar una variable altura en cada nodo e irla actualizando en las inserciones y eliminaciones que se efectúen sobre el árbol.

Como el lector ya debería saber, una función para calcular la altura de un nodo puede escribirse recursivamente como:

int altura(AVLTree *t)

{

if(es_vacio(t))

return -1;

else

return max(altura(izquierdo(t)), altura(derecho(t)));

}

Queremos que la altura de un árbol que consta de sólo un nodo sea 0. Entonces debemos definir la altura de un árbol vacío como -1.

Sin embargo, no podemos darnos el lujo de tener una función cuyo tiempo de ejecución siempre es O(n) ya que, como dijimos, necesitamos la altura de un nodo en tiempo constante. Para ello, redefiniremos la función de la siguiente manera, aprovechando el campo altura que ahora tiene cada nodo del árbol.

int altura (AVLTree * t)

{

if(es_vacio(t))

return -1;

else

return t->altura;

}

Important: Debemos tener mucho cuidado en actualizar el campo altura de cada nodo siempre que modifiquemos de alguna manera el árbol AVL.

Así, es importante tener una función que nos permita actualizar la altura de un nodo cualquiera del árbol y cuyo tiempo de ejecución sea O(1) en el peor de los casos. A continuación se lista una tal función:

void

actualizar_altura (AVLTree * t)

{

if(!es_vacio(t))

t->altura = max (altura ((t)->izq), altura ((t)->der)) + 1;

}

Rotaciones simples

Veremos a continuación una operación sencilla sobre un árbol binario de búsqueda que conserva el órden en sus nodos y que nos ayudará a restaurar la propiedad de equilibrio de un árbol AVL al efectuar operaciones sobre el mismo que puedan perturbarla.

Figure 3. Árbol antes de la rotación simple

Miremos

...

Descargar como (para miembros actualizados)  txt (5 Kb)  
Leer 3 páginas más »
Disponible sólo en Clubensayos.com