I. PORTADA
UNIVERSIDAD TCNICA DE AMBATO
Facultad de Ingeniera en Sistemas, Electrnica e Industrial
II.
1. PP
INFORME DEL PROYECTO
2. YY
2.1 Ttulo
Tipo de Arbol Rojo - Negro
2.2 Objetivos
2.3 Resumen
Por esta razn, si los datos ingresan preponderantemente ordenados el rbol AVL tiene
un mejor comportamiento que el red-black, ya que tiene una altura menor.
Propiedades:
4 15
2 5 12 20
Tambin puede verse, con esta representacin, que en un rbol coloreado todas las
hojas tienen la misma altura. El rbol coloreado es un caso particular de un B-Tree, en
los cuales los nodos pueden almacenar varias claves.
4 9
2 5 7 12 15 20
La trayectoria ms larga, una que alterna entre nodos rojos y negros, es slo el doble
del largo de la trayectoria ms corta, la formada slo por nodos negros.
Luego de insertar desde el 1 hasta el 14, que es un peor caso de rbol binario de
bsqueda, en el rbol coloreado que se muestra en la Figura 2, el trayecto ms largo es
de 6 nodos por la va ms larga y de tres nodos por la ms corta.
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
CARRERA DE INGENIERA EN SISTEMAS COMPUTACIONALES E INFORMTICOS
PERODO ACADMICO: MARZO 2017 / SEPTIEMBRE 2017
En la Figura 2, puede comprobarse que las alturas negras de todos los nodos son
iguales, y que no hay dos rojos adyacentes; adems la raz es negra, cumpliendo todas
las propiedades. [2]
h 2log( n 1)
Se define la funcin altura negra de un nodo x, bh(x), como el nmero de nodos negros
de cualquier trayectoria desde x hasta una hoja, no contando el nodo x.
Se desea probar, mediante induccin, que un subrbol, que parte en el nodo x, contiene
bh(x)
a lo menos 2 -1 nodos internos.
Para obtener el nmero de nodos internos del subrbol que comienza en x, sumamos
los nodos internos de los subrboles hijos, ms el nodo interno x, se obtiene:
bh (x)
2
n 2bh ( x ) 1 2h /2 1
Despejando h, se logra:
Para un rbol AVL, la cota para la altura resulta menor que en rbol coloreado:
La Figura 2a, muestra la complejidad del rbol coloreado, respecto del AVL, y puede
observarse que son muy similares. Pero las operaciones se realizan en menor tiempo,
en un rbol coloreado.
coloreado
AVL
Bst promedio
balanceado
2.6.3 Insercin.
La codificacin resulta sencilla detallando de los diferentes casos..
pnodo y=NULL;
pnodo x=*tree;
while(x!=NULL)
{ y = x;
nuevo->padre=y;
else y->right=nuevo;
{ y=x->padre->padre->right; // y apunta al to
if ((y!=NULL)&&(y->color==RED)) // solo
recoloracin. { x->padre->color=BLACK;
if (x==x->padre->right) { x= x->padre;
lrot(tree,x);} x->padre->color=BLACK; x-
>padre->padre->color=RED;
rrot(tree, x->padre->padre);
}
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
CARRERA DE INGENIERA EN SISTEMAS COMPUTACIONALES E INFORMTICOS
PERODO ACADMICO: MARZO 2017 / SEPTIEMBRE 2017
y->color=BLACK; //pinta al to
if (x==x->padre->left) { x= x->padre;
rrot(tree,x);} x->padre->color=BLACK; x-
>padre->padre->color=RED;
lrot(tree, x->padre->padre);
2.6.4 Descarte.
Para marcar con x la raz de un subrbol, que disminuy su altura negra, se emplea un
nodo externo, de color negro, para almacenar un puntero al padre de ste, cuando el
nodo que debe ser descartado es negro y es una hoja. Se pasa como argumento, a la
funcin que restaura las propiedades de un rbol coloreado, en caso de descartar un
nodo negro, si el nodo x es un centinela (nodo externo); de esta forma antes de modificar
el puntero x, se podr escribir el valor nulo en el padre de x.
pnodo x, y;
if(z==NULL)
Error(3,0);
if(y->color==BLACK)
{ //y es negro.
if (y->padre == NULL)
free(y);
pnodo w;
w=x->padre->right; //w es el
hermano if (w->color==RED)
w->color=BLACK; x-
>padre->color=RED;
lrot(rootp, x->padre);
w=x->padre->right;
if ( (w->left==NULL || w->left->color==BLACK)
//nodo externo o interno
w->color=RED;//ambos sobrinos
negros if(esexterno)
{x->padre->left=NULL; esexterno=0;}
else
if (w->right==NULL || w->right->color ==
BLACK) //externo o interno
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
CARRERA DE INGENIERA EN SISTEMAS COMPUTACIONALES E INFORMTICOS
PERODO ACADMICO: MARZO 2017 / SEPTIEMBRE 2017
w->left->color=BLACK;
w->color=RED;
rrot(rootp, w); w=x-
>padre->right;
{x->padre->left=NULL; esexterno=0;}
x=*rootp; //lleva x a la raiz, se sale del
lazo
if (w->color==RED)
{
w->color=RED;
if(esexterno)
{x->padre->right=NULL;
esexterno=0;} x=x->padre;
else
{
UNIVERSIDAD TCNICA DE AMBATO
FACULTAD DE INGENIERA EN SISTEMAS, ELECTRNICA E INDUSTRIAL
CARRERA DE INGENIERA EN SISTEMAS COMPUTACIONALES E INFORMTICOS
PERODO ACADMICO: MARZO 2017 / SEPTIEMBRE 2017
w->right->color=BLACK;
w->color=RED;
lrot(rootp, w); w=x-
>padre->left;
}
w->color=x->padre->color;
x->padre->color = BLACK;
w->left->color =
BLACK; rrot(rootp, x-
>padre); if(esexterno)
{x->padre->right=NULL;
esexterno=0;} x=*rootp;
Bibliografa
[2] ESTRUCTURASITE, Estructura de datos ll, WORDPRESS, 10 04 2016. [En lnea]. Available:
https://estructurasite.wordpress.com/arbol-avl/. [ltimo acceso: 2017 06 17].