Árbol de separación con un número impar de rotaciones

9

Al insertar un elemento en un árbol de despliegue, las rotaciones se realizan en pares, ya sea en zig-zag o en zig-zig. Cuando hay que realizar un número impar de rotaciones, uno podría hacer la rotación adicional que comienza en la hoja o guardar la rotación adicional y hacerlo en la raíz. ¿Importa?

Por ejemplo, en la imagen adjunta inserto un 4 en un BST y lo "extiendo" a la raíz. En la parte superior de la figura, primero ubico el par zig-zig en el nodo de hoja y realizo la separación en zig-zag desde la parte inferior, dejando una rotación final derecha en la raíz. En la parte inferior de la figura, primero hago la rotación impar comenzando desde la hoja, y luego hago una separación en zig-zig hasta la raíz.

¿Cual es correcta? ¿O ambos conducirán al rendimiento habitual de splay-tree?

dos maneras de extenderse para un número impar de rotaciones

wcochran
fuente

Respuestas:

4

1+3(r(t)r(x))tr(tu): =Iniciar sesión(peso de tusubárbol)Φ(T)=X nodo de Tr(t)

La prueba del lema de acceso analiza los costos de una sola operación zig / zig-zag / zig-zig, etc. Usted obtiene

  1. 1+3(r+(tu)-r(tu))r+tu

  2. 3(r+(tu)-r(tu))

1+3(r(t)-r(X))

Si cambia el orden de las rotaciones obtendrá la misma suma. La única diferencia es que ahora el '' +1 '' proviene de la primera rotación y no de la última rotación. Incluso podrías hacer la rotación en zig en el medio. Todos los análisis adicionales (clásicos) se basan en el lema de acceso.

Sin embargo, la razón por la que realiza la rotación única al final es que no sabe si la profundidad del nodo es par o impar de antemano.

A.Schulz
fuente