1 estruturas de dados com jogos capítulo 8 Árvores
TRANSCRIPT
![Page 1: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/1.jpg)
1
Estruturas de Dados com Jogos
Capítulo 8
Árvores
![Page 2: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/2.jpg)
2
• Entender o conceito, a nomenclatura e a representação usual da estrutura de armazenamento denominada Árvore, e de um tipo especial de Árvore denominada Árvore Binária de Busca - ABB;
• Desenvolver habilidade para elaborar algoritmos sobre Árvores Binárias de Busca, e sobre Árvores em geral;
• Conhecer aplicações e a motivação para o uso de Árvores; entender as situações em que seu uso é pertinente;
• Iniciar o desenvolvimento do seu jogo referente ao Desafio 4.
Seus Objetivos neste Capítulo
![Page 3: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/3.jpg)
3
Árvores: Conceito e Representação
![Page 4: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/4.jpg)
4
Árvore Binária: cada Nó possui, no máximo, dois Filhos.
![Page 5: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/5.jpg)
5
Árvore Binária de Busca - ABB
Três Critérios:
1. A Informação de cada Nó da Subárvore Esquerda de R é menor do que a Informação armazenada no Nó apontado por R;
2. A Informação de cada Nó da Subárvore Direita de R é maior do que a Informação armazenada no Nó apontado por R;
3. As Subárvores Esquerda e Direita do Nó apontado por R também são ABBs.
![Page 6: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/6.jpg)
6
Revisão - Algoritmos Recursivos
![Page 7: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/7.jpg)
7
Cálculo do Fatorial de 3
![Page 8: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/8.jpg)
8
O Valor X Está na Árvore?
![Page 9: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/9.jpg)
9
O Valor X Está na Árvore?
4 casos
![Page 10: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/10.jpg)
10
O Valor X Está na Árvore?
4 casos
![Page 11: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/11.jpg)
11
![Page 12: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/12.jpg)
12
EstáNaÁrvore?
Boolean EstáNaÁrvore (parâmetro por referência R do tipo ABB, parâmetro X do tipo Inteiro) { Se (R == Null)Então Retorne Falso; // Caso 1: Árvore vazia; X não está na Árvore; acabou Senão Se (X == R→Info) Então Retorne Verdadeiro; // Caso 2: X está na árvore; acabou
Senão Se (R→Info > X) Então Retorne ( Está_Na_Árvore (R→Esq, X ) );
// Caso 3: se estiver na Árvore, estará na Sub Esquerda
Senão Retorne ( Está_Na_Árvore (R→Dir, X ) );// Caso 4: se estiver na Árvore, estará na Sub Direita
} // fim EstáNaÁrvore
![Page 13: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/13.jpg)
13
Execução de EstáNaÁrvore para X = 39
![Page 14: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/14.jpg)
14
Execução de EstáNaÁrvore para X = 39
![Page 15: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/15.jpg)
15
Execução de EstáNaÁrvore para X = 70
![Page 16: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/16.jpg)
16
Execução de EstáNaÁrvore para X = 70
![Page 17: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/17.jpg)
17
Ao Elaborar Algoritmos Recursivos...
• Liste todos os casos, identificando-os como Caso 1, Caso 2, e assim por diante;
• Identifique os casos em que é possível dar uma resposta de imediato, e proponha a resposta;
• Identifique os casos em que não é possível resolver de imediato, e procure resolver com uma ou mais chamadas recursivas.
![Page 18: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/18.jpg)
18
ImprimeTodos (parâmetro por referência R do tipo ABB);
/* Imprime todos os elementos da Árvore de Raiz R */
ExercíciosImprimir uma Árvore
![Page 19: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/19.jpg)
19
ImprimeTodos (parâmetro por referência R do tipo ABB);
Se (R != Null) Então { Escreva(R→Info); // imprime a informação da raiz
ImprimeTodos(R→Esq); // imprime todos da Subárvore EsquerdaImprimeTodos(R→Dir); } // imprime todos da Subárvore Direita
} // fim ImprimeTodos - PréOrdem
Imprimir uma Árvore
![Page 20: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/20.jpg)
20
ImprimeTodos (parâmetro por referência R do tipo ABB);
Se (R != Null) Então { ImprimeTodos(R→Esq); // imprime todos da Subárvore Esquerda
Escreva(R→Info); // imprime a informação da raiz ImprimeTodos(R→Dir); } // imprime todos da Subárvore Direita} // fim ImprimeTodos - InOrdem
Imprimir uma Árvore
![Page 21: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/21.jpg)
21
Exercício 8.4 Soma dos Elementos de uma Árvore
Exercício 8.5 Número de Nós com um Único Filho
Exercício 8.6 Árvores São Iguais?
Exercício 8.7 É Árvore Binária de Busca?
Exercícios
![Page 22: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/22.jpg)
22
ABB: Onde Inserir o 37?
![Page 23: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/23.jpg)
23
Inserindo Novos Valores em uma ABB
• Inserir novos elementos como Nós Terminais (sem Filhos);
• Procurar o lugar certo, considerado o critério que define uma ABB, e então inserir.
![Page 24: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/24.jpg)
24
Insere (parâmetro por referência R do tipo ABB, parâmetro X do tipo Inteiro, parâmetro por referência Ok do tipo Boolean);
/* Insere o valor X na ABB de Raiz R, como um Nó terminal, sem Filhos. Ok retorna Verdadeiro para o caso de X ter sido inserido, e Falso caso contrário. */
Insere
![Page 25: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/25.jpg)
25
Insere
![Page 26: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/26.jpg)
26
Insere (parâmetro por referência R do tipo ABB, parâmetro X do tipo Inteiro, parâmetro por referência Ok do tipo Boolean);
Variável P do tipo NodePtr; Se (R == Null) Então { P = NewNode; // Caso 1: Achou o lugar; insere e acaba
P→Info = X;P→Dir = Null;P→Esq = Null;R = P;
P = Null;Ok = Verdadeiro; }
Senão { Se (X == R→Info) Então Ok = Falso; // Caso 2: X já está na árvore; não insere; Senão { Se (R→Info> X)
Então Insere (R→Esq, X , Ok) // Caso 3: tenta na Es Senão Insere(R→Dir, X, Ok); // Caso 4: tenta na Dir
} // fim senão } // fim senão} // fim Insere ABB
![Page 27: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/27.jpg)
27
Execução de Insere para X = 37
![Page 28: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/28.jpg)
28
Execução de Insere para X = 37
![Page 29: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/29.jpg)
29
Execução de Insere para X = 37
![Page 30: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/30.jpg)
30
Remove
• 28
• 80
• 50
Como consertar a árvore ao remover:
![Page 31: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/31.jpg)
31
Remove
![Page 32: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/32.jpg)
32
Remove
![Page 33: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/33.jpg)
33
Remove
![Page 34: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/34.jpg)
34
Exercício 8.9 – Remove de ABB
Remove (parâmetro por referência R do tipo ABB, parâmetro X do tipo Inteiro, parâmetro por referência Ok do tipo Boolean);
/* Remove o valor X da ABB de Raiz R. Ok retorna Verdadeiro para o caso de X ter sido encontrado e removido, e Falso caso contrário. */
Exercício 8.10 – Cria e Vazia
![Page 35: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/35.jpg)
35
Por Que uma Árvore Binária de Busca É Boa?
ABB Uniformemente Distribuída
![Page 36: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/36.jpg)
36
Por Que uma
Árvore Binária de Busca É
Boa?
Níveis na Árvore
Quantos Nós Cabem na Árvore
1 12 33 74 155 31N 2N - 110 102313 819116 6553518 26214320 1 milhão (aprox)30 1 bilhão (aprox)40 1 trilhão (aprox)
ABB Uniformemente Distribuída
![Page 37: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/37.jpg)
37
Aplicações de Árvores
Chave de Busca e Outras Informações no Nó
![Page 38: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/38.jpg)
38
Aplicações de Árvores
Chave de Busca e Outras Informações no Nó
![Page 39: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/39.jpg)
39Índice para um Arquivo
Aplicações de Árvores
![Page 40: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/40.jpg)
40
Aplicações de Árvores
B-Trees
![Page 41: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/41.jpg)
41
Aplicações de Árvores: QuadTrees
Region QuadTree
![Page 42: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/42.jpg)
42
Árvore de Decisão para Jogos
![Page 43: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/43.jpg)
43
Agilidade e Suporte a Decisões
Uma ABB permite consultas rápidas, mesmo quando a quantidade de elementos é grande.
Árvores de Decisão podem ser utilizadas para dar inteligência a um jogo.
É possível propor Árvores diferenciadas que atendam a necessidades de sua aplicação.
![Page 44: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/44.jpg)
44
Avanço de Projeto
Exercício 8.12 Discutir Aplicações de Árvores em Jogos
Exercício 8.13 Avançar o Projeto do Desafio 4: Defina Regras, Escolha um Nome e Inicie o Desenvolvimento do Seu Jogo
![Page 45: 1 Estruturas de Dados com Jogos Capítulo 8 Árvores](https://reader036.vdocuments.site/reader036/viewer/2022062512/552fc133497959413d8d723a/html5/thumbnails/45.jpg)
45
Estruturas de Dados com JogosAprender a programar pode ser divertido!
Dê personalidade, e dê inteligência ao seu jogo! Mostre isso para os seus amigos!
Comece a Desenvolver
Seu Jogo Agora!