![Page 1: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/1.jpg)
O que é uma árvoreEm Computação, é um modelo abstratode uma estruturahierárquicaUma árvore consistede nós com umarelação pai-filhoAplicações:� Estruturaorganizacional
� Sistemas de arquivos� Ambiente de programação
Computadores”Zen”
Vendas P&DConstrução
Laptops DesktopsBrasil Internacional
Europa Asia Canada
![Page 2: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/2.jpg)
sub-árvore
Terminologia de árvoreRaiz (root): Nó sem pai (A)Nó interno: Nó com, pelo menos, um filho (A, B, C, F)Nó externo: Nó sem filhos (E, I, J, K, G, H, D)Ancestral de um nó: pai, avô, bisavô, etc.Profundidade de um nó: Número de ancestraisAltura de um árvore: Profundidade máxima (3)Descendente de um nó: filho, neto, bisneto, etc.
A
B DC
G HE F
I J K
Sub-árvore: árvore formada por um nó e seus descendentes
![Page 3: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/3.jpg)
TAD árvoreMétodos genéricos:� integer size()� integer height()� boolean isEmpty()� Iterator elements()� Iterator nos()Métodos de acesso:� No root()� No parent(No)� Iterator children(No)
Métodos de consulta:� boolean isInternal(No)� boolean isExternal(No)� boolean isRoot(No)� integer depth(No)
Métodos de atualização:� Object replace(No, o)
Métodos adicionais podem ser definidos pela estrutura que extende/implementa o TAD árvore
![Page 4: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/4.jpg)
Profundidade
A profundidade de um nó v pode ser definida recursivamente como:� Se v for raiz, então a profundidade é 0� Senão, a profundidade é 1 mais a profundidade do pai de v
Algoritmo depth(v)
se (isRoot(v))
retorne 0
senão
retorne 1+depth(parent(v))
![Page 5: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/5.jpg)
Altura
A altura de um nó v pode ser definida recursivamente como:� Se v for externo, então a altura é 0� Senão, a altura é 1 mais a maior altura de um filho de v
Algoritmo altura(v)
se (isExternal(v))
retorne 0
senão
h=0
para cada w em children(v)
h=max(h,altura(w))
retorne 1+h
Algoritmo altura2(v)
h=0
para cada w em nos()
se (isExternal(w))
h=max(h,depth(w))
retorne h
![Page 6: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/6.jpg)
Travessia pré ordemUma travessia visita os nós de uma árvore de uma forma sistemáticaEm uma travessia pré-ordem, um nó é visitado antes de seus descendentesAplicação: imprimir um documento estruturado
Ganhar dinheiro rápido
1. Motivações Referências2. Métodos
2.1 Fraudar estoque
2.2 Esquema Ponzi1.1 Semente 1.2 Atividade 2.3 Roubar
banco
1
2
3
5
4 6 7 8
9
Algoritmo preOrder(v)
visite(v)
para cada filho w de v
preorder (w)
![Page 7: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/7.jpg)
Travessia pós ordemEm uma travessia pós-ordem, um nó é visitado depois de seus descendentesAplicação: Computar o espaço usado por diretórios, subdiretórios e arquivos
Algoritmo postOrder(v)
para cada filho w of v
postOrder (w)
visite(v)
g.71.014/
exercicios/ aFazer.txt1Kprogramas/
Alcance.java10K
Estoques.java25K
Exercicio1.pdf3K
Exercicio2.pdf2K
Bolha1.java20K
9
3
1
7
2 4 5 6
8
![Page 8: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/8.jpg)
Árvore bináriaUma árvore binária é uma árvore com as seguintes propriedades:� Cada nó interno tem, no máximo,
dois filhos� Arvore binária própria é aquela em que cada nó tem exatemente zero ou dois filhos
� Os filhos de um nó é um par ordenado
Chamamos os filhos de um nó de filho da esquerda e filho da direitaPodemos, também, definir uma árvore binária recursivamente como:� uma árvore consistindo de um
único nó, ou� Uma árvore cuja raiz tem um par
ordenado de filho, cada um dos quais é uma árvore binária
Aplicações:� Expressões aritméticas� Processo de decisão� busca
A
B C
F GD E
H I
![Page 9: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/9.jpg)
Árvore de expressões aritméticasÁrvore binária associada com uma expressão aritmética� Nós internos: operadores� Nós externos: operandosExemplo: árvore da expressão aritméticapara a expressão (2 × (a − 1) + (3 × b))
+
××
−2
a 1
3 b
![Page 10: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/10.jpg)
Árvore de decisãoÁ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: Onde jantar
Refeição rápida?
Que tal um café? Pode ser caro?
Cantina Shopping Abade Tábua de carne
Sim Não
Sim Não Sim Não
![Page 11: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/11.jpg)
Propriedades de AB (BT)Notaçãon número de nóse número de nós externos
i número de nós internos
h altura (height)
Propriedades:� e ==== i ++++ 1
� n ==== 2e −−−− 1
� h ≤≤≤≤ i
� h ≤≤≤≤ (n −−−− 1)////2
� e ≤≤≤≤ 2h
� h ≥≥≥≥ log2 e
� h ≥≥≥≥ log2 (n ++++ 1) −−−− 1
![Page 12: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/12.jpg)
Propriedades de AB (BT)
Nível Nós0
1
2
3
1
2
4
8
Número máximo de nós em um nível h é 2h
Número total de nós é, no máximo é 2h+1 -1
![Page 13: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/13.jpg)
TAD Árvore Binaria
O TAD ArvoreBinaria possui os métodos de árvore.Métodos adicionais:� Position leftChild(p)� Position rightChild(p)� boolean hasLeft(p)� boolean hasRight(p)
Métodos de atualização podem ser definidos por estruturas de dados que implementam o TAD ArvoreBinaria
![Page 14: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/14.jpg)
Travessia em ordemNa travessia inorder, um nó é visitado depois do filho da esquerda e antes do filho da direitaAplicação: Desenhar uma árvore binária� x(v) = colocação de v� y(v) = profundidade de v
Algoritmo inOrder(v)
se (isInternal (v))
inOrder (leftChild (v))
visite(v)
se ( isInternal (v))
inOrder (rightChild (v))
3
1
2
5
6
7 9
8
4
![Page 15: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/15.jpg)
Impressão de expressões aritm.Especialização de uma travessia inorder� Imprime operando/operador
quando visita o nó� imprime “(“ antes de visitar o
filho da esquerda� imprime “)“ depois de visitar o
filho da direita
Algoritmo printExpression(v)
se (isInternal (v))print(“(’’)inOrder (leftChild (v))
print(v.element ())
se (isInternal (v) )inOrder (rightChild (v))
print (“)’’)
+
××
−2
a 1
3 b((2 × (a − 1)) + (3 × b))
![Page 16: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/16.jpg)
Avaliação de expressões aritm.Especialização da travessia pós-ordem� Método recursivo retorna o valor de uma subárvore
� Ao visitar um nó interno, combina os valores das subárvores
Algoritmo evalExpr(v)
se (isExternal (v) )return v.element ()
senão
x ← evalExpr(leftChild (v))
y ← evalExpr(rightChild (v))
◊◊◊◊ ← operador em v
return x ◊◊◊◊ y+
××
−2
5 1
3 2
![Page 17: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/17.jpg)
Travessia de Euler (Euler tour)Travessia genérica de árvores bináriasCaminha pela árvore e visita cada nó 3 vezes:� pela esquerda (pré ordem)� Por baixo (em ordem)� pela direita (pós ordem)
+
×
−2
5 1
3 2
EB
D×
![Page 18: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/18.jpg)
∅
Estrutura de dados para árvoresUm nó é um objeto que armazena� Elemento� Nó pai� Nós Filhos (Sequência,
Vector, Array, etc)Objetos nós
B
DA
C E
F
B
∅ ∅
A D F
∅
C
∅
E
![Page 19: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/19.jpg)
Estrutura de dados para ABUm nó é um objeto que armazena� Elemento� Nó pai� Filho da esquerda� Filho da direitaObjetos nós
B
DA
C E
∅∅∅∅ ∅∅∅∅
∅∅∅∅ ∅∅∅∅ ∅∅∅∅ ∅∅∅∅
B
A D
C E
∅∅∅∅
![Page 20: O que é uma árvore - IFRNdocente.ifrn.edu.br/.../06Arvores_rlh.pdfO que é uma árvore EmComputação, é um modeloabstrato de umaestrutura hierárquica Uma árvoreconsiste de nóscom](https://reader034.vdocuments.mx/reader034/viewer/2022052502/609520730a0bb22da148699e/html5/thumbnails/20.jpg)
Estrutura de dados para AB
Podemos usar um array
a
b c
d e f g
h i j k l m n o
1
23
4 5 6 7
8 9 10 11 12 13 14 15
a b c d e f g h i j k l m n o
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15