Você está na página 1de 13

rvoresRubroNegras

rvoresRubroNegras(RB)
Propriedades:
2. Todonnegroourubro.
3. Todafolha(nvazio)negro.
4. Seumnvermelho,seusdoisfilhos
sonegros.
5. Todocaminhosimplesdeumnauma
folhadescendentedestentemo
mesmonmerodensnegros.

Alturanegra
Onmerodensnegrosnocaminhodeum
nvatumnfolhadescendenteseu
denominadoalturanegradev(hn(v)).
Pelapropriedade4aalturanegraestbem
definida,umavezquetodocaminhode
umnaumdeseusdescendentestemo
mesmonmerodensnegros.

Teorema1
TodasubrvoredeumaRBcomraiznon
xcontmnomnimo2**(hn(x))1ns.
Provaporinduoemhn.
Base:hn(x)=0(xfolhavazio)=>nmero
dens2**01=0
HipteseIndutiva:verdadeparansx
comalturanegraigualah1queonmero
densnasubrvorextemnomnimo
2**(h1)1ns.

Teorema1
Passodainduo:provarqueverdadepara
hn(x)=h.
Sejaxumntalquehn(x)=h.Cadafilhodextem
alturanegraigualhouigualah1.Logo,cada
subrvoredextemalturapelomenos2**(h1)
1.Portantoasubrvorextemnmerodens
nomnimoigual2**(h1)1+2**(h1)1+1,ou
seja,nmerodensnomnimoiguala
2**(h)1

Teorema2
AsRBspossuemalturanomximoigual
2(logn+1).
Prova:
SejahaalturadeumaRB.Pelapropriedade3,
pelomenosametadedosnsnocaminhoda
raizatumafolhadensnegros.Logoa
alturanegradarvorepelomenosh/2,
portanto,peloTeorema1,n>=2*(h/2)1,onden
onmerodensdarvore,ento,
n+1>=2**(h/2).Aplicandologaosdoisladosda
inequaao:h<=2log(n+1).

Rotaes
InsereseremoesemumarvoreRB
podemgerarumanovarvorede
pesquisaquenoobedeces4
propriedadesdeumaRB.Emalgumas
situaesnecessriofazeralguns
remanejamentosnosnsdanovarvore
paraqueelasemantenhaumaRB.Estes
remanejamentossodenominados
rotaes.

Rotaes
H dois tipos de rotaes: rotao
esquerda e rotao direita, como
mostraafiguraabaixo:
rotaoADireita(y)

rotaoAEsquerda(x)

RotaoEsquerda
rotacaoEsquerda(T,x){
y=x>dir;
x>dir=y>esq;
if(y>left!=0){y>esq>pai=x;}
y>pai=x>pai;
if(x>pai==0){
Raiz=y;
elseif(x==x>pai>esq)
x>pai>esq=y
else
x>pai>dir=y;
y>esq=x;
x>pai=y;
Obs.:Cdigosemelhantefeitopararotaodireita

Insero
Inicialmente,oalgoritmodeinseroem
umarvorebinriadepesquisacomum
chamadoparainserironxnaRB.
Onxrecebeacorrubro.
Ainserodexnoviolaaspropriedades:
1,2e4dasRB,maspodeafetara
propriedade3.ocasoemqueopaidex
tambmrubro.H3casosaconsiderar.

Caso1:tiodireitadexrubro
C

Novox
y

y=tio
A

Novox

y
B

TiodireitadexNOrubro
caso2

C
y=tio
A

Rotaoesquerdado
paidex

Caso3

Rotao
direitadoav
dex

InseroemRB
voidRBinsere(x){
T.insere(x);//inseroemrvoredepesquisa
x>cor=rubro;
while(x!=raiz&&x>pai>cor==rubro){
avo=x>pai>pai;
if(x>pai==avo>left){
y=avo>dir//tiodireitadex;
if(y>cor==rubro){
x>pai>cor=negra;//Caso1
y>cor=negro;avo>cor=rubro;//Caso1
x=avo;//Caso1
}
else
if(x==x>pai>dir){
x=x>pai;//Caso2
rotacaoEsquerda(T,x);//Caso2
x>pai>cor=negra;//Caso3
x>pai>pai>cor=rubro;//Caso3
rotacaoDireita(T,x);
//Caso3
}
}
else//comandossemelhantes,trocandoesqcomdir
}
raiz>cor=negra
}