Eliminación en un ABB · 2017. 5. 8. · Reestructuración de Arboles AVL Reestructurar un árbol...

16
Eliminación en un ABB El procedimiento para eliminar un nodo z de un árbol de búsqueda binaria tiene tres casos: Caso 1: Si z no tiene hijos, se modifica su padre p[z] para reemplazar z con nil como su hijo. Ejemplo:

Transcript of Eliminación en un ABB · 2017. 5. 8. · Reestructuración de Arboles AVL Reestructurar un árbol...

  • Eliminación en un ABBEl procedimiento para eliminar un nodo z de un árbol de búsqueda binaria tiene tres casos:

    Caso 1:Si z no tiene hijos, se modifica su padre p[z] para reemplazar z con nil como su hijo.Ejemplo:

  • Caso 2:Si z tiene un solo hijo, simplemente se separa z del árbol.Ejemplo:

  • Caso 3:Si z tiene dos hijos, se separa su sucesor y, el cual tiene como máximo un hijo, y luego se reemplaza el contenido de z con el contenido de y.

    Se tienen que sustituir por el nodo que se encuentra mas a la izquierda en el subárbol derecho, o por el nodo que se encuentra mas a la derecha en el subárbol izquierdoEjemplo:

  • Estructura de Datos

    Arboles Balanceados

  • DefiniciónUn árbol está perfectamente balanceado si su estructura es óptima con respeto al largo del camino de la raíz a cada hoja:

    Todas las hojas están en el mismo nivel, es decir, el largo máximo de tal camino es igual al largo mínimo de tal camino sobre todas las hojas.

  • Necesitamos operaciones para “recuperar” la forma balanceada después de inserciones y eliminaciones de elementos, aunque no cada operación causa una falta de balance en el árbol.Estas operaciones se llaman rotaciones.

    La rotación adecuada está elegida según las alturas de los ramos que están fuera de balance, es decir, tienen diferencia de altura mayor o igual a dos.Si se balancea después de cada inserción y eliminación siempre y cuando es necesario, la diferenciaserá siempre exactamente dos.

    La rotacion puede ser hacia la izquierda o hacia la derecha

  • Factor de Equilibrio

    El Factor de Equilibrio (FE) o de Balance (FB) de un nodo se define como la altura del SAD menos la altura del SAI correspondiente. El Factor de Equilibrio de cada nodo en un árbol balanceado será –1, 1 ó 0. Si FE llegara a tomar los valores de –2 ó 2, entonces debería reestructurarse el árbol.

  • Reestructuración de Arboles AVL

    Reestructurar un árbol balanceado significa rotar los nodos del mismo.

    La rotación puede ser simple o compuesta. En el primer tipo de rotación se involucran dos nodos y en el segundo, se afectan tres.

    Si la rotación es simple puede realizarse por la rama derecha (RD: Rotación Derecha) o por la rama izquierda (RII: Rotación Izquierda).

    Si la rotación es compuesta puede realizarse por las ramas derecha e izquierda (RDI: Rotación Derecha Izquierda) o por las ramas izquierda y derecha (RID: Rotación Izquierda Derecha).

  • Clasificación de las rotaciones

  • Rotación Simple

  • Inserción en Árboles BalanceadosCASO 1. El SAI y el SAD del árbol balanceado tienen la misma altura (hSAD = hSAI):

    a) Si se inserta un elemento en SAI entonces hSAD será menor que hSAIb) Si se inserta un elemento en SAD entonces hSAD será mayor que hSAI

    Ya sea para a) o para b), no se viola el criterio de equilibrio o balance del árbol.

    B C

    A

    B C

    A

    B C

    A

    CASO 1 1.a

    DD

    1.b

  • CASO 2. El SAI y el SAD del árbol balanceado tienen altura diferente (hSAD ≠ hSAI):

    CASO 2.1. Si hSAD > hSAI

    a) Si se inserta un elemento en SAI entonces hSAD será igual a hSAILas ramas tienen la misma altura por lo que se mejora el equilibrio

    b) Si se inserta un elemento en SAD entonces el árbol debe ser reestructuradoLas ramas están desequilibradas por lo que se requiere reestructuración

    B C

    A

    D

    B C

    A

    DE

    B C

    A

    DE

    CASO 2.1. 2.1.a. 2.1.b.

    F

  • CASO 2.2. Si hSAD < hSAI

    a) Si se inserta un elemento en SAI entonces el árbol debe ser reestructurado

    Las ramas están desequilibradas por lo que se requiere reestructuración

    b) Si se inserta un elemento en SAD entonces hSAD será igual a hSAI

    Las ramas tienen la misma altura por lo que se mejora el equilibrio

    Para poder determinar si un árbol está balanceado debe calcularse el FE de cada nodo del árbol.

    B C

    A

    D

    CASO 2.2.

    B C

    A

    D

    2.2.a.

    E

    B C

    A

    ED

    2.2.b.

  • Eliminación en Arboles Balanceados

    La operación de borrado en árboles balanceados consiste en quitar un nodo del árbol sin violar los principios que definen a un árbol balanceado.

    Para este tipo de operación se deben de tomar en cuenta los siguientes casos:

    CASO 1: Si el elemento a borrar es hoja, simplemente se suprime.

    CASO 2: Si el elemento a borrar tiene sólo un hijo, entonces tiene que sustituirse por él.

    CASO 3: Si el elemento a borrar tiene los dos hijos, entonces tiene que sustituirse por el nodo que se encuentra más a la izquierda en el SAD o por el nodo que se encuentra más a la derecha en el SAI.

  • Ejemplo:

    INSERTAR LAS CLAVES EN UN ARBOL VACIO ABB BALANCEADO

    LAS CLAVES SON:

    65,50,23,70,82,68,39

    12,34,45,67,23,11