Você está na página 1de 27

Prof. Dr.

Matheus Franco

Estrutura de Dados II

Computação
 Diversas aplicações necessitam de estruturas
mais complexas que as listas, pilhas e filas
 Para várias aplicações a melhor solução é a
utilização de árvores que são uma estrutura não-
linear, ou melhor, uma estrutura hierárquica.
 É um tipo abstrato de dados que armazena
elementos de uma forma hierárquica.
 A busca sequencial tradicional é O(N). Não é
eficiente, mas permite inserções e remoções
rápidas. A inserção pode ser feita no final da
tabela, pois a ordem não precisa ser
preservada. A remoção pode ser feita
simplesmente pela substituição do elemento
removido por um valor especial que não faz
parte da tabela. Entretanto, é importante
notar que uma inserção ou remoção é quase
sempre precedida por uma busca
 A busca binária é O(log n). É muito eficiente, mas
a tabela deve estar em ordem crescente ou
decrescente. Portanto inserções e remoções são
muito ineficientes. Para inserir ou remover
mantendo a ordem, é necessário deslocar parte
da tabela.
 A situação ideal seria um algoritmo que tivesse a
eficiência da busca binária O(log n), permitisse
inserções e remoções rápidas e que a tabela
ocupasse somente o espaço necessário. Isso é
conseguido quando a tabela tem uma estrutura
em árvore de busca.
 Chamamos de Árvores, um conjunto finito T de nós ou vértices,

onde existe um nó especial chamado raiz e os restantes podem

ser divididos em dois subconjuntos disjuntos, chamados de sub-

árvores. Em particular T pode ser vazio.

 Contém elementos que são chamados de nós;

 O “pai de todos” é a raiz 1º da hierarquia;


 O conteúdo de um nó pode ser de qualquer tipo que se deseje
representar.
 Os nós que não têm filhos são chamados de folhas (nós
externos)
Árvores
• Árvores são estruturas de dados com
alocação dinâmica, também são tipos de
Listas Encadeadas.
• A Elemento (nodo ou nó) possui, além dos
dados a serem armazenados, dois outros
ponteiros:
– Um para o ramo da direita
– Outro para o ramo da esquerda
 Árvore é um conjunto
finito de nós, com
informação e que têm
uma relação entre si
do tipo pai-filho. Se a
árvore não é vazia,
ou seja, se tem nós,
então:
◦ existe um nó especial
– a raiz – que não tem
pai
◦ todo o nó da árvore
(exceto a raiz) tem um
único pai
◦ um nó pode ter 0, 1 ou
mais filhos
 Por definição, árvores são estruturas
recursivas, cada nó de uma árvore é uma raiz
de uma subárvore.
 O número de filhos de um nó denomina-se
grau, um nó com grau 0 denomina-se folha.
 A profundidade de um nó N numa árvore é o
número de níveis ancestrais. A raiz de uma
árvore tem nível 0. Atenção: Alguns autores citam nível partindo
de 1.
 nível 0 = A
 nível 1 = B, C,D
 nível 2 = E,F, G, H, I,J
 nível 3 = K,L,M
 A altura de um nó n é o número de nós do maior
caminho de n até um de seus descendentes.
 A altura de uma árvore á seu maior nível.
 A altura de uma árvore com um único nó é 0; A
altura da árvore vazia é –1;
 Máximo de nós em um nível: 2n onde n é o
nível em questão;
 Máximo de nós em uma árvore 2H+1-1 onde
H é a altura da árvore.
 Árvore é dita cheia se todos os seus nós
internos têm 2 sub-árvores associadas e todos
os nós folhas estão no último nível.
 Em geral árvores são utilizadas para
representar informações que precisam ser
organizadas de forma hierárquica.
 Estrutura de diretórios:
 Árvore binária associada com uma expressão aritmética
◦ Nós internos: operadores
◦ Nós externos: operandos
 Exemplo: árvore da expressão aritmética para a expressão
(2  (a - 1) + (3  b))

+
 

2 - 3 b

a 1
 Árvore binária associada com um processo de decisão
◦ Nós internos: questões com respostas sim/não
◦ Nós externos: decisões
 Exemplo: Irá jogar ou não baseado em atributos.
 Os índices aceleram a recuperação
dos dados. Índices são sempre bem
vindos em colunas de grande
seletividade, como por exemplo,
além da chave primária, que muitas
vezes pode circular como
identificador único da entidade na
sua aplicação, você pode ter também
um índice para colunas que poderão
lhe auxiliar em consultas em que
estas contarão com a cláusula
WHERE, precisando ou não usar os
operadores AND, OR ou NOT, que
muitas vezes, em casos específicos,
alteram a performance da consulta.
 Uma árvore binária é uma árvore de grau 2,
isto é, nenhum nó tem mais dois filhos.
 Todos devem ter 0, 1 ou 2 filhos no máximo.
 Para implementar árvores binárias, usamos
tipos de dados abstratos.
Árvore de busca binária onde os elementos
são organizados de forma que:
x

y<x z >= x

21
 É uma árvore binária em que cada nó tem 0
ou 2 filhos
 Construir uma Árvore Binária a partir da
seguinte lista de valores: 4,1,6,5,3,2 e 7.

1 6

3 5 7

2
Construa uma árvore binária com os seguintes
valores 50, 20, 39, 8, 79, 26, 58, 15,88, 85,
96, 71, 42, 53. Diga também seu grau e altura.
50
20 79

8 39 58 88

15 26 42 53 71 85 96
 Criar uma árvore binária com os seguintes
valores: 5,3,1,8,6,9,7,4,0,2
 Dada a seguinte árvore:

a) Quais os nós folhas?


b) Qual o grau da árvore?
c) Qual a altura da árvore ?
d) Qual o nível do nó G ?
"A tree may grow a
thousand feet tall,
but its leaves will
return to its
roots."
-Chinese Proverb

Você também pode gostar