Você está na página 1de 42

Árvores

Aula 14

Profª Otilia
Objetivos...
Nesta aula serão apresentadas as propriedades básicas e definição
de árvore. Será explicada sua motivação de uso e as vantagens de
implementar estruturas hierárquicas em relação às listas lineares.
Também serão demonstradas características de uma árvore, como
seus elementos, caminhos,
altura e níveis.

2
Situação-Problema
• Imagine que exista a necessidade de, a partir do diretório
principal de um conjunto de arquivos organizados, percorrer o
caminho que faz o menor percurso até encontrar o arquivo
procurado?
• Uma lista linear não seria a melhor construção para buscar
arquivos por esse método, uma vez que ignora definições de
hierarquia.
• Como deveria ser construída a estrutura que permita o percurso
de elementos através de vários caminhos?

3
Aplicações e Exemplos
• Aplicações:
• Construção de rodovias, instalação de redes em geral.

• Em alguns casos, para se mostrar um resultado para grafos é interessante


começar mostrando para árvores.

• Exemplos:
• Vamos representar as situações a seguir através de grafos.

4
Árvores
• utilizada em muitas aplicações

• modela uma hierarquia entre elementos


• árvore genealógica

• diagrama hierárquico de uma organização

• modelagem de algoritmos

• O conceito de árvores está diretamente ligado à recursão

5
Árvores: Motivação
• Qual estrutura de dados o Windows Explorer deve utilizar para
gerenciar os arquivos?

6
Árvores
• um conjunto finito de elementos onde
• um elemento é chamado de raiz

• os outros são divididos em subconjuntos disjuntos, onde cada um define


uma árvore
• cada elemento é um nó ou vértice da árvore

• arcos ou arestas conectam os vértices

7
Árvores
• uma coleção não vazia de vértices e ramos que satisfazem a certos
requisitos

• vértice (ou nó):


• é um objeto simples que pode ter um nome e mais alguma outra informação
associada

• arco ou aresta (direcionado ou não):


• é uma conexão entre dois nós

8
Árvore Genealógica
• Vértices: pessoas.
• Arestas: relação de
parentesco em
primeiro grau
(mãe (pai) – filho(a)).

9
Jogo da velha
• Vértices: os estados do jogo.
• Arestas: existe uma aresta entre um estado do jogo e um estado
que poder ser obtido através deste.

10
Árvores
•A

11
Árvores

Diagrama
de Venn

12
Expressão Aritmética
• pode ser representada por uma árvore,
colocando-se os operandos nos nós e
seus respectivos operadores nas sub-
árvores.

13
Aplicações
• Árvores são adequadas para representar estruturas hierárquicas
não lineares
• Exemplos:
• Relações de descendência (pai, filho, etc)
• Diagrama hierárquico de uma organização
• Campeonatos de modalidades desportivas
• Taxonomia
• Em computação
• Estrutura de diretórios (pastas)
• Busca de dados armazenados no computador
• Representação de espaço de soluções (ex: jogo de xadrez)
• Modelagem de algoritmos

14
Árvores
• Existem vários tipos de árvores em computação, desenvolvidas
para diferentes tipos de aplicações:
• Árvore binária de busca
• Árvores AVL
• Árvore Rubro-negra
• Árvore B+
• Árvore 2-3
• Árvore 2-3-4
• Quadtree
• Octree
• Etc.

15
Propriedade de uma Árvore
• Propriedades:
• Pai: é o antecessor imediato de um vértice

• Filho: é o sucessor imediato de um vértice

• Raiz: é o vértice que não possui pai

• Nós terminais ou folhas: qualquer vértice que não possui filhos

• Nós não-terminais ou internos: qualquer vértice que possui pelo menos 1


filho.

16
Árvores

Para calcular o altura


de uma árvores, basta
obter o nó do maior
caminho

17
Árvore
• Caminho em uma árvore
• É uma sequencia de vértices de modo que existe sempre uma aresta ligando
o vértice anterior com o seguinte
• Existe exatamente um caminho entre a raiz e cada um dos nós de árvore

A, D, H

18
Árvore
• Sub-árvore
• Dado um determinado vértice, cada filho seu é a raiz de uma nova sub-
árvore
• De fato, qualquer vértice é a raiz de uma sub-árvore consistindo dele e
dos nós abaixo dele
• Grau de um vértice: é um número de sob-árvores do vértice

19
20
Árvores
• Altura da árvore:
• Também chamada de profundidade
• É o comprimento do caminho mais longo da raiz até uma das suas folhas
• Níveis
• Numa árvore, os vértices são classificados em níveis
• O nível é o número de nós no caminho entre o vértice e a raiz

21
Árvore Binária
• Árvore Binária:
• É um tipo especial de árvore.
• Cada vértice pode possuir duas sub-árvore: sub-árvore a esquerda e
sub-árvore a direita.
• O grau de cada vértice (número de filhos) pode ser 0, 1 ou 2

22
Árvore Binária
• Árvore Estritamente Binária
• Cada nó (vértice) possui 0 ou 2 sub-árvores
• Nenhum nó tem filho único
• Nós internos (não folhas) sempre tem 2 filhos

23
Árvore Binária
• Árvore Binária Completa
• É estritamente binária e todos os seus nós-folha estão no mesmo nível
• O número de nós de uma árvore binária completa é 2h-1, onde h é a altura
da árvore.

Todo mundo tem que estar no


mesmo nível

24
Árvore Binária
• Árvore Binária Quase Completa
• A diferença de altura entre as sub-árvores de qualquer nó é no máximo 1.
• Se a altura da árvore é D, cada nó folha esta no nível D ou D-1.

25
Percorrendo uma árvore binária
• Muitas operações em árvores binárias necessitam que se percorra
todos os nós de suas sub-árvores, executando alguma ação ou
tratamento em cada nó.

• Cada nó é visitado uma única vez.

• Isso gera uma sequência linear de nós, cuja ordem depende de


como a árvore foi percorrida.

26
Percorrendo uma árvore binária
• Podemos percorrer a árvore de 3 formas (essas são as mais
importantes, existem outras)
• Pré ordem:
• Visita a raiz, o filho da esquerda e o filho da direita

• Em ordem:
• Visita o filho da esquerda, a raiz e o filho da direita

• Pós ordem:
• Visita o filho da esquerda, o filho da direita e a raiz

27
Pré-Ordem
• Visita a raiz, o filho da esquerda e o filho da direita

2 6

1 3 5 7

4 2 1 3 6 5 7
28
Outro exemplo de Pré-ordem

ABDGCEHIF

29
Algoritmo pré-ordem
• Algoritmo: percurso em pré-ordem

• ptraiz = ponteiro para a raiz da árvore


• pt↑.esq = ponteiro para o filho esquerdo do nó apontado por pt
• pt↑.dir = ponteiro para o filho direito do nó apontado por pt
• visita(pt) = operação da visita ao nó apontado por pt (depende da
aplicação)
30
Exercício – 4 minutos
• Escrever o percurso pré-ordem, para cada uma das árvores abaixo:

3
1 2
4

ABCDFGE ABCD ABCD ABDECFG


31
Em ordem
• Visita o filho da esquerda, a raiz e o filho da direita

2 6

1 3 5 7

1 2 3 4 5 6 7
32
Outro exemplo de Em ordem

DGBAHEICF

33
Algoritmo em ordem
• Algoritmo: percurso em ordem

• ptraiz = ponteiro para a raiz da árvore


• pt↑.esq = ponteiro para o filho esquerdo do nó apontado por pt
• pt↑.dir = ponteiro para o filho direito do nó apontado por pt
• visita(pt) = operação da visita ao nó apontado por pt (depende da
aplicação)
34
Exercício – 4 minutos
• Escrever o percurso em ordem, para cada uma das árvores abaixo:

3
1 2
4

BAFDGCE DCBA ABCD DBEAFCG


35
Pós ordem
• Visita o filho da esquerda, o filho da direita e a raiz

2 6

1 3 5 7

1 3 2 5 7 6 4
36
Outro exemplo de Pós-ordem

GDBHIEFCA

37
Complexidade do algoritmo de percurso
• Há exatamente uma chamada do procedimento, para cada nó da
árvore.

• Em cada chamada, as operações envolvidas podem ser realizadas


em tempo constante.

• Conseqüência: o algoritmo executa exatamente n passos, onde n é o


número de nós da árvore.

38
Aplicação
• Aplicação: determinar a altura de cada nó de uma árvore binária T.
• Para determinar a altura de um nó v, é necessário conhecer o
comprimento do maior caminho de v, até um de seus descendentes.
• A altura de v somente pode ser calculada após a visita a todos os
descendentes de v.
• O percurso pós ordem é o indicado.
• Cálculo da altura: h = 1 + max {h1, h2}

h1 h2

39
Exercícios
• Levando em conta os valores numéricos e as operações algébricas
inseridas na árvore binária, assinale a opção que é formada pela
leitura da árvore em profundidade em percurso pós-ordem.

a) 4x5+7/8–2
b) 45x78/2-+
c) x45+7/8–2
d) +x45-/782
e) +x–45/278

40
Leitura Específica
• Video "Estrutura de Dados - Árvores - Conceitos básicos". Disponível em:
https://www.youtube.com/watch?v=eiMMtyRBYCE
• ASCENCIO, A.F.G., ARAUJO, G.S. Estrutura de Dados: Algoritmos, Análise da
Complexidade e implementações em Java e C/C++. 1ª Ed.. São Paulo: Pearson Prentice
Hall, 2010. Disponível em:
https://plataforma.bvirtual.com.br/Acervo/Publicacao/1995 Pag. 278 - Estruturas
de Dados do Tipo Pilha Árvore
• Árvores. Disponível em: https://sites.google.com/site/proffdesiqueiraed/aulas/aula-
10---arvores
• Estrutura de Dados não sequencial com armazenamento não sequencial (?Árvore?).
Disponível em:
https://www.di.ubi.pt/~cbarrico/Disciplinas/AlgoritmosEstruturasDados/Downloads
/Capitulo%204%20-%20Arvores.pdf

41
Aprenda +
• Video "Árvores". Disponível em:
https://www.youtube.com/watch?v=iLvpaqAoVD8

42

Você também pode gostar