Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 08 - Árvores
1.1. Introdução
As estruturas de dados do tipo árvore são não lineares, ou seja, os elementos que as
compõem não estão armazenados de forma sequencial e também não estão todos encadeados. A
Figura 1 ilustra duas árvores.
Figura 1. Árvores
1/10
Estruturas de Dados
As árvores binárias podem ser ilustradas de três formas:
2/10
Estruturas de Dados
Nó raiz
Nó pai dos
nós 2 e 8
Nó filho do nó 6
Nó irmão do nó 8 Nó filho do nó 6
Nó pai dos nós 1 e 4 Nó irmão do nó 2
Nó folha
Nó filho do nó 2
Nó irmão do nó 4 Nó pai do nó 3
Nó folha Nó filho do nó 2
Nó irmão do nó 1
Nó filho do nó 4
Nó folha
l) Nós ancestrais (Figura 6): são os nós que estão acima de um nó e têm ligação direta ou indireta.
m) Nós descendentes (Figura 7): são os nós que estão abaixo de um nó e possuem ligação direta
ou indireta.
o) Nós descendentes esquerdo (Figura 9): estão abaixo de um nó, possuem ligação direta ou
indireta e fazem parte da sub-árvore esquerda.
s) Árvore estritamente binária (Figura 12): árvore em que todos os nós têm 0 ou 2 filhos.
t) Expressão que representa o número de nós de uma árvore estritamente binária = 2n−1, onde n
é o número de nós folha (Figura 12).
u) Árvore completa (Figura 13): todos os nós com menos de dois filhos ficam no último e no
penúltimo nível.
5/10
Estruturas de Dados
v) Árvore cheia (Figura 14): árvore estritamente binária e completa.
6/10
Estruturas de Dados
A relação existente entre a altura da árvore (h) e o número de nós (n) de uma árvore
binária é uma informação muito importante em muitas aplicações. É comum a pergunta pela altura
máxima e mínima de árvores binárias. Possuem altura máxima aquelas em que cada nó possui
apenas um único filho. A altura de tais árvores é igual a n. Já uma árvore completa possui altura
mínima.
A operação de busca em uma árvore binária é igual ao número de nós existentes no
caminho desde a raiz da árvore até o nó procurado. Na árvore binária genérica, no pior caso, esse
nó está a uma distância O(n) da raiz, logo, a complexidade da busca é O(n), que corresponde à
altura da árvore. No melhor caso, em que uma árvore pode possuir altura mínima, que é o caso de
uma árvore binária completa, o tempo de busca é O(log n).
Considerando ainda uma árvore de altura mínima, na operação de inserção, o nó sempre é
inserido em uma folha, e deve percorrer todos os nós desde a raiz, até chegar a uma folha e
acrescentar um filho a ela, gastando nisso a altura da árvore, ou seja, O(log n).
Na operação de remoção, o pior caso é quando o nó a ser removido está em uma folha no
nível mais baixo. Gasta-se a altura da árvore para encontrá-lo, em uma árvore de altura mínima, e
algumas operações de atualização de ponteiros, gerando complexidade O(log n).
7/10
Estruturas de Dados
1.4. Árvores Balanceadas
8/10
Estruturas de Dados
(a)
(b)
(c)
Árvore AVL é uma árvore binária de busca balanceada, ou seja, uma árvore balanceada
(árvore completa) são as árvores que minimizam o número de comparações efetuadas no pior
caso para uma busca com chaves de probabilidades de ocorrências idênticas. Contudo, para
garantir essa propriedade em aplicações dinâmicas, é preciso reconstruir a árvore para seu
estado ideal a cada operação sobre seus nós (inclusão ou exclusão), para ser alcançado um custo
de algoritmo com o tempo de pesquisa tendendo a O(log N).
9/10
Estruturas de Dados
O nome AVL vem de seus criadores soviéticos Adelson Velsky e Landis, e sua primeira
referência encontra-se no documento "Algoritmos para organização da informação" de 1962. A
Figura 17 ilustra uma comparação entre Árvore não AVL e AVL.
Uma árvore binária balanceada (AVL) é uma árvore binária na qual as alturas das duas
subárvores de todo nó nunca difere em mais de 1. Cada nó numa árvore binária balanceada (AVL)
tem balanceamento de 1, -1 ou 0. Para garantir essa propriedade, a cada inserção ou remoção o
fator de balanço deve ser atualizado a partir do pai do nó inserido até a raiz da árvore. Na
inserção basta encontrar o primeiro nó desregulado (fb= -2 ou fb= 2), aplicar o operação de
rotação necessária, não havendo necessidade de verificar os demais nós. Na remoção a
verificação deverá prosseguir até a raiz, podendo requerer mais de uma rotação.
Referência:
Ascencio, A.F.G. & Araujo, G.S. Estruturas de Dados. Editora Pearson, 2011.
Szwarcfiter, Jayme Luiz; Markenzon, Lilian. Estruturas de Dados e seus Algoritmos. Editora LTC,
1994.
10/10