apostila - Árvores rubro negras
DESCRIPTION
Apostila sobre Árvores Rubro Negras em programaçãoTRANSCRIPT
-
rvoresRubroNegras
-
rvoresRubroNegras(RB)
Propriedades:2. Todonnegroourubro.3. Todafolha(nvazio)negro.4. Seumnvermelho,seusdoisfilhos
sonegros.5. Todocaminhosimplesdeumnauma
folhadescendentedestentemomesmonmerodensnegros.
-
Alturanegra
Onmerodensnegrosnocaminhodeumnvatumnfolhadescendenteseudenominadoalturanegradev(hn(v)).
Pelapropriedade4aalturanegraestbemdefinida,umavezquetodocaminhodeumnaumdeseusdescendentestemomesmonmerodensnegros.
-
Teorema1
TodasubrvoredeumaRBcomraiznonxcontmnomnimo2**(hn(x))1ns.
Provaporinduoemhn.Base:hn(x)=0(xfolhavazio)=>nmerodens2**01=0
HipteseIndutiva:verdadeparansxcomalturanegraigualah1queonmerodensnasubrvorextemnomnimo2**(h1)1ns.
-
Teorema1
Passodainduo:provarqueverdadeparahn(x)=h.
Sejaxumntalquehn(x)=h.Cadafilhodextemalturanegraigualhouigualah1.Logo,cadasubrvoredextemalturapelomenos2**(h1)1.Portantoasubrvorextemnmerodensnomnimoigual2**(h1)1+2**(h1)1+1,ouseja,nmerodensnomnimoiguala
2**(h)1
-
Teorema2
AsRBspossuemalturanomximoigual2(logn+1).
Prova:SejahaalturadeumaRB.Pelapropriedade3,pelomenosametadedosnsnocaminhodaraizatumafolhadensnegros.Logoaalturanegradarvorepelomenosh/2,portanto,peloTeorema1,n>=2*(h/2)1,ondenonmerodensdarvore,ento,n+1>=2**(h/2).Aplicandologaosdoisladosdainequaao:h
-
Rotaes
InsereseremoesemumarvoreRBpodemgerarumanovarvoredepesquisaquenoobedeces4propriedadesdeumaRB.EmalgumassituaesnecessriofazeralgunsremanejamentosnosnsdanovarvoreparaqueelasemantenhaumaRB.Estesremanejamentossodenominadosrotaes.
-
Rotaes
H dois tipos de rotaes: rotao esquerda e rotao direita, comomostraafiguraabaixo:
y
x
x
y
rotaoADireita(y)
rotaoAEsquerda(x)
-
RotaoEsquerdarotacaoEsquerda(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=yelse
x>pai>dir=y;y>esq=x;x>pai=y;Obs.:Cdigosemelhantefeitopararotaodireita
-
Insero
Inicialmente,oalgoritmodeinseroemumarvorebinriadepesquisacomumchamadoparainserironxnaRB.
Onxrecebeacorrubro. Ainserodexnoviolaaspropriedades:1,2e4dasRB,maspodeafetarapropriedade3.ocasoemqueopaidextambmrubro.H3casosaconsiderar.
-
Caso1:tiodireitadexrubro
C
AD
B
y=tio
C
AD
B
y
C
BD
A
y
C
BD
A
y
x
Novox
x
Novox
-
TiodireitadexNOrubroC
A
B
y=tio
C
A
B
y
x
B
AC
y
caso2Rotaoesquerdadopaidex
x
Caso3Rotaodireitadoavdex
x
-
InseroemRBvoidRBinsere(x){
T.insere(x);//inseroemrvoredepesquisax>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;//Caso1y>cor=negro;avo>cor=rubro;//Caso1x=avo;//Caso1
}elseif(x==x>pai>dir){
x=x>pai;//Caso2rotacaoEsquerda(T,x);//Caso2x>pai>cor=negra;//Caso3x>pai>pai>cor=rubro;//Caso3rotacaoDireita(T,x); //Caso3
}}else//comandossemelhantes,trocandoesqcomdir}raiz>cor=negra}