A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo.

Apresentações semelhantes


Apresentação em tema: "Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo."— Transcrição da apresentação:

1 Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo Arrais de Souza Murilo Raphael de Souza Lira Rafael Alberto Gomes Pereira Lima Rafael Brandão Lobo Rafael Loureiro de Carvalho Tiago Carneiro Pessoa Canto Vinicius Miranda Cesar if672.ufpe@gmail.com

2 Árvores Binárias Estruturas dinâmicas formada por nós que possuem referências para outros dois nós (filhos). Cada nó é raiz de uma sub-árvore class Arvore { NoArvore raiz; } class NoArvore { int valor; NoArvore esq; NoArvore dir; } RAIZ 12 59 17241 87

3 Pré-work: Árvores em Pré- ordem Pode-se usar pré-work para imprimir uma árvore em pré-ordem, ou seja, o valor do nó é impresso antes de suas duas sub-árvores 12 5 12 5 17 12 5 17 8 12 5 17 8 2 12 5 17 8 2 9 12 5 17 8 2 9 4 12 5 17 8 2 9 4 7 12 5 17 8 2 9 4 7 1 12 5 17 8 2 9 4 7 1

4 Pré-work: Árvores em Pré- ordem Implementação: void preOrdem(NoArvore arv) { if(arv == null){ return; } arquivo.print(arv.valor + " "); preOrdem(arv.esq); preOrdem(arv.dir); } Pré-work Teste do caso base Chamadas recursivas

5 Recursão: Árvores Binárias O mesmo conceito pode ser estendido para imprimir árvores em pós-ordem (em que o pai é impresso após os filhos) ou in-ordem (o pai é impresso entre os filhos) Pode-se usar o conceito de pós-work também para encontrar a altura de uma árvore. A altura de uma árvore é a maior distância entre a raiz e uma folha Por padrão, dizemos que uma folha é uma árvore de altura zero

6 Pós-Work: Altura de Árvores Exemplos: 212 59 172 4 1 7 1 4 3 7 Altura: 4 Altura: 3 Altura: 0

7 Pós-Work: Altura de Árvores A altura de uma folha é zero, ou seja, uma referência nula seria uma árvore de altura –1. A altura de um nó qualquer é igual a 1 + a altura da maior sub-árvore. 5 Altura: 3 2 Altura: 0 9 Altura: 1 12 Altura: 4 Altura: -1 Pós-work: a altura do pai é calculada após as dos filhos

8 Pós-Work: Altura de Árvores 12 5 9 17 2 1 4 7 0 1 2 0 3 4 1 0

9 Pós-Work: Altura de Árvores Implementação: int altura(NoArvore arv) { if (arv == null){ return -1; } int h1 = altura(arv.esq); int h2 = altura(arv.dir); return (1 + Math.max(h1, h2)); } Teste do caso base Chamadas recursivas Pós-work

10 Árvore de Busca Binária A árvore de busca binária ou árvore de pesquisa binária é uma árvore onde todos os nós são valores, todo nó à esquerda contém uma sub-árvore com os valores menores que o nó raiz da sub-árvore e todos os nós da sub-árvore à direita contêm somente valores maiores que o nó raiz. Os valores são relevantes na árvore de busca binária. Seu objetivo é estruturar os dados de forma flexível permitindo pesquisa binária.

11 Representação da ABB X Y < XZ > X

12 Inserção na Árvore de Busca Inserir(No,Raiz){ Se raiz é nula então: Raiz := No Senão Se No > Raiz então: Inserir(No,Direita da Raiz) Senão Inserir(No,Esquerda da Raiz) }

13 Exemplo de Inserção Elementos a serem inseridos: 50,35, 60,40,48,22,78 50 35 22 40 60 48 78 35 < 50 22 < 35 48 > 40 40 > 35 raiz 60 > 50 78 > 60

14 Remoção na Árvore de Busca Caso 1: - O nó é uma folha: Remover(Raiz, x){ no := Buscar(Raiz,x) Se no é o filho da direita direita do Pai de no := nulo Senão esquerda do Pai de no := nulo }

15 Remoção na Árvore de Busca Caso 2 - O nó possui apenas um filho: Remover(Raiz,x){ no := Buscar(Raiz,x) Se no é o filho da direita direita do Pai de no := filho de no Senão esquerda do Pai de no := filho de no }

16 Remoção na Árvore de Busca Alguns conceitos importantes: - Sucessor = menor nó entre os maiores 40 50 30 80 90 70 75 60 Qual o sucessor de 50? Nó 60 Percorre uma vez para a direita Percorre para a esquerda quantas vezes forem possíveis

17 Remoção na Árvore de Busca - Predecessor = maior nó entre os menores 40 60 30 80 90 70 35 50 25 53 55 58 52 Qual é o predecessor de 60 ? Percorre uma vez para a esquerda Percorre para a direita quantas vezes forem possíveis Nó 58

18 Remoção na Árvore de Busca Caso 3 - O nó possui dois filhos: Remover(Raiz,x){ no := Buscar(Raiz,x) Se no é o filho da direita direita do Pai de no := sucessor/predecessor de no Senão esquerda do Pai de no := sucessor/predecessor de no Se sucessor tem filho Pai de sucessor aponta para filho de sucessor }


Carregar ppt "Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo."

Apresentações semelhantes


Anúncios Google