marfanjr / rubro-negra

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

/*----------------------------------------------------------------------------*/
/* UFPR – Bacharelado em Ciência da Computação                                */
/* CI057: Algoritmos e Estruturas de dados III, 2sem/2013                     */
/* Aluno: Marfan Fragoso Veras Junior - GRR20113754                           */
/*----------------------------------------------------------------------------*/

/*----------------------------------------------------------------------------*/
Uma árvore vermelho-preto é uma árvore de pesquisa binária com um bit extra de 
armazenamento por nó: sua cor, que pode ser VERMELHO ou PRETO. Restringindo o
modo como os nós podem ser coloridos em qualquer caminho desde a raiz até uma
folha, as árvores vermelho-preto asseguram que nenhum desses caminhos será 
maior que duas vezes o comprimento de qualquer outro, de forma que a árvore é
aproximadamente balanceada.
Cada nó da árvore contém agora os campos cor, chave, pai, esq e dir. 

Uma árvore de pesquisa binária é uma árvore vermelho-preto se satisfaz às se-
guintes propriedades vermelho-preto:
    1. Todo nó é vermelho ou preto.
    2. A raiz é preta.
    3. Toda folha (NIL) é preta.
    4. Se um nó é vermelho, então ambos os seus filhos são pretos.
    5. Para cada nó, todos os caminhos desde um nó até as folhas descendentes
       contêm o mesmo número de nós pretos.
Por questão de conveniência no uso de condições limites no código de árvores
vermelho-preto, usamos uma única sentinela para representar NILL. Para uma ár-
vore vermelho-preto T, a sentinela nodonull é um objeto com os mesmos campos
que um nó comum na árvore. Seu compo cor é PRETO e seus outros campos--pai, esq,
dir e chave--podem ser deginidos como valores arbitrários.
Chamamos o número de nós pretos em qualquer caminho desde um nó x, sem incluir
esse nó, até uma folha, de altura de preto do nó. Pela prorpriedade 5, a noção 
de altura de preto é bem definida, pois todos os caminhos descendentes a partir
do nó têm o mesmo número de nós pretos. Definimos a altura de preto de uma ár-
vore vermelho-preto como a altura de preto de sua raiz.

Lema
Uma árvore vermelho-preto com n nós internos tem altura no máximo 2lg(n+1).

As operações sobre árvores de pesquisa arvRN_insere e arvRN_remove, quando
executadas sobre uma árvore vermelho-preto com n chaves demoram o tempo O(lg n).
Considerando-se que elas modificam a árvore, o resultado pode violar as pro-
priedades vermelho-preto enumeradas acima. Para restabelecer essas propriedades,
devemos mudar as cores de alguns nós na árvore e também mudar a estrutura de 
ponteiros.
Mudamos a estrutura de ponteiros através de rotação.
/*----------------------------------------------------------------------------*/

About


Languages

Language:C 99.1%Language:Makefile 0.9%