Saltar al contenido

La rotación

Una rotación cambia qué nodo está arriba sin romper el invariante. Rotación a la izquierda sobre x, cuyo hijo derecho es y:

Rotación a la izquierda sobre xAntes: x es la raíz del subárbol, con el subárbol A a su izquierda y el nodo y a su derecha; y tiene los subárboles B a su izquierda y C a su derecha. Después: y es la raíz; x es su hijo izquierdo, con A y B como hijos; C sigue siendo el hijo derecho de y. B, que cambió de padre de y a x, está marcado.AntesDespuésxAyB*CyxCAB*rotar a laizquierda
Los triángulos son subárboles enteros. B, con el asterisco, es el único subárbol que cambia de padre: pasa de y a x.

A, B y C son subárboles. B estaba a la izquierda de y (mayor que x, menor que y) y pasa a ser hijo derecho de x: sigue siendo mayor que x y menor que y. Solo cambian tres enlaces.

Por ejemplo, rotar a la izquierda sobre 1 el árbol degenerado 1, 2, 3: aquí A y B no tienen nada y C es el nodo 3.

Rotar el árbol degenerado 1, 2, 3Antes: una cadena 1, 2, 3 que baja a la derecha, con 1 como raíz. Después de rotar a la izquierda sobre 1: la raíz es 2, con 1 a su izquierda y 3 a su derecha; la altura pasa de 3 a 2.Antes123Después12*3x = 1, y = 2, C = 3
Con tres claves, una rotación basta para pasar de altura 3 a altura 2. La raíz nueva lleva el asterisco.
Un BST tiene raíz 10, y su hijo derecho es 20, con hijos 15 (izquierdo) y 30 (derecho). Haces una rotación a la izquierda sobre 10. ¿Qué queda?