Árvore rubro-negra

Origem: Wikipédia, a enciclopédia livre.

Árvore rubro-negra é uma estrutura de dados criada em 1972 com o nome de árvores binárias simétricas. Assim como as árvores binárias comuns, as árvores rubro-negras possuem um conjunto de operações (tais como inserção, remoção e busca), porém são geralmente mais eficientes devido ao fato de estarem sempre balanceadas. Este balanceamento se dá justamente pela característica que dá nome à árvore, que vem de um bit extra em cada nodo que determina se esta é "vermelha" ou "preta" dentro do conjunto de regras que rege a árvore. Além desde bit, cada nodo também conta com os campos dados do nodo, filho esquerdo do nodo, filho direito do nodo e pai do nodo.

Visualização de uma árvore rubro-negra
Visualização de uma árvore rubro-negra

Índice

[editar] Regras

Uma árvore rubro-negra estará sempre balanceada pois segue o seguinte conjunto de regras:

  • cada nodo da árvore possui um valor
  • a cada novo nodo inserido na árvore obedecerá o esquema de menor para o lado esquerdo e maior para o lado direito.
  • a cada nodo é associada uma cor: vermelha ou preta.
  • o nodo raiz é sempre preto.
  • nodos vermelhos que não sejam folhas possuem apenas filhos pretos.
  • todos os caminhos a partir da raiz até qualquer folha passa pelo mesmo número de nodos pretos.

A cada vez que uma operação é realizada na árvore, testa-se este conjunto de propriedades e são efetuadas rotações e ajuste de cores até que a árvore satisfaça todas estas regras.

Uma rotação é uma operação realizada na árvore para garantir seu balanceamento. Na rubro-negra pode ser feita a direita e a esquerda, onde são alterados os ponteiros dos nodos rotacionados.

Ao inserir-se um elemento em uma árvore rubro-negra, esta é comparada com os elementos e alocada em sua posição conforme a regra 2. Ao inserir um elemento ele é sempre da cor vermelha (exceto se for o nodo raiz). A seguir a árvore analisa se o antecessor da folha. Se este for vermelho será necessário alterar as cores para garantir a regra 6.

Existem dois tipos de remoção em uma árvore. De acordo com a remoção efetiva, com as operações de rotação e alteração de cor, remove-se o nodo e estabelece-se as propriedades da árvore. De acordo com a remoção preguiçosa, marca-se um nodo como removido, mas efetivamente não o retira. Sendo desta maneira nenhuma alteração é efetuada na árvore, porém são necessários novos mecanismos de busca e inserção para que reconheçam o nodo como "ausente".

[editar] Bibliografia

[editar] Ver também

[editar] Ligações externas

[editar] Demonstrações

[editar] Implementações


  Este artigo é um esboço sobre Informática. Você pode ajudar a Wikipédia expandindo-o.
Ferramentas pessoais