Anda di halaman 1dari 3

A árvore Red-Black é uma árvore binária de busca que tem um atributo adicional para cada nó: a

cor. Esta cor pode ser ou vermelha ou preta. Iremos, para o propósito deste artigo, considerar que
os nós nulos terão as cores pretas.

A estrutura deste tipo de árvore é a seguinte:

struct t_red_black_node {

enum { red, black } colour;

void *item;

struct t_red_black_node *left,

*right,

*parent;

Definição:

Uma árvore Red-Black é uma árvore binária de busca que tem as seguintes propriedades:

1. Todo nó é vermelho ou preto.

2. Toda folha (NULL) é preta.

3. Se um nó é vermelho, então seus dois filhos serão pretos.

4. Todos os caminhos simples de um nó para uma folha descendente contém o


mesmo número de nós pretos.

O número de nós pretos de qualquer caminho de, mas não incluindo, um nó x para uma folha é
chamado de black-height (altura dos pretos) de um nó, denotado bh(x). Nós podemos provar o
seguinte:

Uma árvore red-black com n nós internos tem tamanho máximo de 2log(n+1).

Isso demonstra porque esse tipo de árvore é uma boa árvore de busca: ela sempre pode ser
pesquisada em tempo de O(log n).

Adições e exclusões na árvore red-black destroem suas propriedades e, com isso, devemos
restaurá-las. Para isso, precisamos aplicar as seguintes operações:
http://www.jaltiere.com/?p=53

http://www.eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx

Árvores binárias de busca são estruturas de dados que tem tempo de ordem loarítmica ( O(log N) )
para busca, inserção e exclusão. Desde que os dados cheguem de forma aleatória isso é verdade,
porém as árvores binárias de busca tem três casos onde a estrutura deixa de ser logarítmica e
passa a ser uma lista encadeada de ordem linear ( O(n) ). Os dois casos mais comuns são quando
inserimos dados em ordem crescente ou decrescente. O tereceiro caso é a ordem alternada de
fora para dentro. Devido ao fato de que as árvores binárias de busca armazenam seus dados de um
jeito que pode ser considerado ordenado, se os dados já chegarem ordenados causará problemas.
Considere adicionar os valores 0, 1, 2, 3, 4 a uma árvore binária de busca. Já que todo novo item
tem valor maior que o anterior, eles serão conectados na sub-árvore direita de seu nó pai.

Seria melhor se tivesse duas escolhas em cada nó ao invés de uma. Desta forma podemos ter toda
a vantagem do desenho das árvores binárias de busca. Esse tipo de árvore chamamos de árvore
balanceada. Infelizmente, é muito trabalhoso manter uma árvore balanceada perfeita e não
podemos garantir o balanceamento todas as vezes. Porém, podemos chegar perto o bastante em
garantir uma performance logarítimica. Um destes esquemas de árvores balanceadas são as
árvores red-black.

A red-black tree é uma árvore binária de busca que é auto balanceada. Por ser balanceada, evita o
pior caso das árvores binárias onde os nós são inseridos em ordem. A estratégia de inserção de um
nó é encontrar o lugar certo na árvore, e inserir o nó como um filho direito se ele tiver valor maior
que o seu pai, ou ao lado esquerdo se for menor.

As árvores binárias de busca têm como estratégia de inserção encontrar o lugar correto na árvore
para inserir o nó. Se o valor do nó a ser inserido for maior que o seu pai, ele é inserido à direita e,
se for menor, à esquerda.

Anda mungkin juga menyukai