Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9....

188
Algoritmos e Estruturas de Dados I Árvores Binárias de Busca Prof. Tiago Eugenio de Melo [email protected] www.tiagodemelo.info

Transcript of Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9....

Page 1: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Algoritmos e Estruturas de Dados I

Árvores Binárias de Busca

Prof. Tiago Eugenio de [email protected]

www.tiagodemelo.info

Page 2: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Observações

● O conteúdo dessa aula é parcialmente proveniente do Capítulo 14 do livro “Data Structure and Algorithms Using Python”.

● As palavras com a fonte Courier indicam uma palavra-reservada da linguagem de programação.

2 / 50

Page 3: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvores Binárias de Busca

3 / 50

Page 4: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Introdução

4 / 50

Page 5: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Introdução

● Busca (pesquisa) de dados em texto é uma operação bastante comum e, por isso, bastante estudada.

4 / 50

Page 6: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Introdução

● Busca (pesquisa) de dados em texto é uma operação bastante comum e, por isso, bastante estudada.

● Uma pesquisa linear de um array ou uma lista de Python é bastante lenta.

4 / 50

Page 7: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Introdução

● Busca (pesquisa) de dados em texto é uma operação bastante comum e, por isso, bastante estudada.

● Uma pesquisa linear de um array ou uma lista de Python é bastante lenta.– Essa pesquisa pode ser melhorada com uma busca

binária.

4 / 50

Page 8: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Introdução

● Busca (pesquisa) de dados em texto é uma operação bastante comum e, por isso, bastante estudada.

● Uma pesquisa linear de um array ou uma lista de Python é bastante lenta.– Essa pesquisa pode ser melhorada com uma busca

binária.– Porém, arrays e listas de Python ainda têm

dificuldade de realizar as operação de inserção e remoção de chaves.

4 / 50

Page 9: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Introdução

● Busca (pesquisa) de dados em texto é uma operação bastante comum e, por isso, bastante estudada.

● Uma pesquisa linear de um array ou uma lista de Python é bastante lenta.– Essa pesquisa pode ser melhorada com uma busca binária.– Porém, arrays e listas de Python ainda têm dificuldade de

realizar as operação de inserção e remoção de chaves.– Exemplo: a remoção de uma chave obriga a reorganização

da lista, pois a busca binária somente funciona em listas (arrays) ordenados.

4 / 50

Page 10: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Introdução

● Busca (pesquisa) de dados em texto é uma operação bastante comum e, por isso, bastante estudada.

● Uma pesquisa linear de um array ou uma lista de Python é bastante lenta.– Essa pesquisa pode ser melhorada com uma busca binária.– Porém, arrays e listas de Python ainda têm dificuldade de realizar as

operação de inserção e remoção de chaves.– Exemplo: a remoção de uma chave obriga a reorganização da lista,

pois a busca binária somente funciona em listas (arrays) ordenados.● O objetivo primário de uma árvore de busca é fornecer uma

eficiente operação de busca para rapidamente localizar um específico item na árvore.

4 / 50

Page 11: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

5 / 50

Page 12: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Uma árvore binária de busca (ABB) – binary search tree (BST) – é uma árvore binária em que cada nó contém um campo chave e a árvore é estruturada de tal maneira que para cada nó interior V:

5 / 50

Page 13: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Uma árvore binária de busca (ABB) – binary search tree (BST) – é uma árvore binária em que cada nó contém um campo chave e a árvore é estruturada de tal maneira que para cada nó interior V:– Todas as chaves menores que a chave do nó V

devem ser armazenadas à esquerda de V.

5 / 50

Page 14: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Uma árvore binária de busca (ABB) – binary search tree (BST) – é uma árvore binária em que cada nó contém um campo chave e a árvore é estruturada de tal maneira que para cada nó interior V:– Todas as chaves menores que a chave do nó V

devem ser armazenadas à esquerda de V.– Todas as chaves maiores que a chave do nó V

devem ser armazenadas à direita de V.

5 / 50

Page 15: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Exemplo de ABB:

6 / 50

Page 16: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Exemplo de ABB:

6 / 50

Page 17: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Exemplo de ABB:

1 → 4 → 12 → 23 → 29 → 37 → 41 → 60 → 71 → 84 → 90 → 1006 / 50

Page 18: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

7 / 50

Page 19: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Observações:

7 / 50

Page 20: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Observações:– A nossa definição de ABB impede o

armazenamento de chaves duplicadas.

7 / 50

Page 21: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Observações:– A nossa definição de ABB impede o

armazenamento de chaves duplicadas.● É uma suposição realista para vários problemas.

7 / 50

Page 22: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Observações:– A nossa definição de ABB impede o

armazenamento de chaves duplicadas.● É uma suposição realista para vários problemas.● Isto torna a implementação mais simples.

7 / 50

Page 23: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Observações:– A nossa definição de ABB impede o

armazenamento de chaves duplicadas.● É uma suposição realista para vários problemas.● Isto torna a implementação mais simples.● Essa restrição poderia ser alterada para permitir o

armazenamento de chaves duplicadas.

7 / 50

Page 24: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Árvore Binária de Busca (ABB)

● Observações:– A nossa definição de ABB impede o

armazenamento de chaves duplicadas.● É uma suposição realista para vários problemas.● Isto torna a implementação mais simples.● Essa restrição poderia ser alterada para permitir o

armazenamento de chaves duplicadas.● Por questões didáticas, nós estamos apresentando

apenas uma versão que considera chaves únicas..

7 / 50

Page 25: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

8 / 50

Page 26: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

8 / 50

Page 27: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

8 / 50

Page 28: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

8 / 50

Page 29: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

8 / 50

Page 30: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

O que é um iterador?

8 / 50

Page 31: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

O que é um iterador?

É qualquer tipo que permita uso

de loop (for).

8 / 50

Page 32: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

9 / 50

Page 33: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

TAD de ABB

9 / 50

Page 34: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

10 / 50

Page 35: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Dada uma árvore binária, alguém sempre vai querer buscar na árvore para determinar se ela contém uma determinada chave (ou localizar um elemento específico).

10 / 50

Page 36: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Dada uma árvore binária, alguém sempre vai querer buscar na árvore para determinar se ela contém uma determinada chave (ou localizar um elemento específico).

● Lembre-se:

10 / 50

Page 37: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Dada uma árvore binária, alguém sempre vai querer buscar na árvore para determinar se ela contém uma determinada chave (ou localizar um elemento específico).

● Lembre-se:– Existe um único caminho da raiz até algum dos nós

da árvore.

10 / 50

Page 38: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Dada uma árvore binária, alguém sempre vai querer buscar na árvore para determinar se ela contém uma determinada chave (ou localizar um elemento específico).

● Lembre-se:– Existe um único caminho da raiz até algum dos nós

da árvore.● A questão é:

10 / 50

Page 39: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Dada uma árvore binária, alguém sempre vai querer buscar na árvore para determinar se ela contém uma determinada chave (ou localizar um elemento específico).

● Lembre-se:– Existe um único caminho da raiz até algum dos nós da

árvore.● A questão é:

– Como nós sabemos qual caminho seguir?

10 / 50

Page 40: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

11 / 50

Page 41: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● O início da busca sempre se iniciará pela raiz.

11 / 50

Page 42: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● O início da busca sempre se iniciará pela raiz.

11 / 50

Page 43: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

12 / 50

Page 44: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● O procurado é comparado com o nó da raiz.

12 / 50

Page 45: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● O procurado é comparado com o nó da raiz.

12 / 50

Page 46: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● O procurado é comparado com o nó da raiz.– Se ele for igual, então encontramos.

12 / 50

Page 47: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● O procurado é comparado com o nó da raiz.– Se ele for igual, então encontramos.– Se ele for maior, então estará à direita da raiz.

12 / 50

Page 48: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● O procurado é comparado com o nó da raiz.– Se ele for igual, então encontramos.– Se ele for maior, então estará à direita da raiz.– Se ele for menor, então estará à esquerda da raiz.

12 / 50

Page 49: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● O procurado é comparado com o nó da raiz.– Se ele for igual, então encontramos.– Se ele for maior, então estará à direita da raiz.– Se ele for menor, então estará à esquerda da raiz.– Processo é repetido até localizarmos o alvo ou

encontrarmos um nó filho nulo.

12 / 50

Page 50: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

13 / 50

Page 51: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 29:

13 / 50

Page 52: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 29:

13 / 50

Page 53: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 29:

13 / 50

Page 54: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 29:

13 / 50

Page 55: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 29:

13 / 50

Page 56: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 29:

13 / 50

Page 57: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 29:

13 / 50

Page 58: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 29:

13 / 50

Page 59: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

14 / 50

Page 60: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 68:

14 / 50

Page 61: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 68:

14 / 50

Page 62: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 68:

14 / 50

Page 63: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 68:

14 / 50

Page 64: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 68:

14 / 50

Page 65: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 68:

14 / 50

Page 66: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 68:

14 / 50

Page 67: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● Suponha que vamos buscar o elemento 68:

NULL

14 / 50

Page 68: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

15 / 50

Page 69: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● As operações de busca na árvore binária podem ser implementadas iterativamente ou com recursão.

15 / 50

Page 70: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● As operações de busca na árvore binária podem ser implementadas iterativamente ou com recursão.

● Vamos ver um exemplo de implementação com recursão.

15 / 50

Page 71: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● As operações de busca na árvore binária podem ser implementadas iterativamente ou com recursão.

● Vamos ver um exemplo de implementação com recursão.

● O modo iterativo ficará como exercício!!!

15 / 50

Page 72: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

16 / 50

Page 73: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● A função tem dois casos base:

16 / 50

Page 74: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● A função tem dois casos base:– O elemento alvo está no nó atual da busca ou

16 / 50

Page 75: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● A função tem dois casos base:– O elemento alvo está no nó atual da busca ou– Um nó filho NULL é encontrado.

16 / 50

Page 76: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● A função tem dois casos base:– O elemento alvo está no nó atual da busca ou– Um nó filho NULL é encontrado.

● Portanto, a função retornará:

16 / 50

Page 77: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● A função tem dois casos base:– O elemento alvo está no nó atual da busca ou– Um nó filho NULL é encontrado.

● Portanto, a função retornará:– A referência ao nó que contém o elemento

procurado ou

16 / 50

Page 78: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

● A função tem dois casos base:– O elemento alvo está no nó atual da busca ou– Um nó filho NULL é encontrado.

● Portanto, a função retornará:– A referência ao nó que contém o elemento

procurado ou– None.

16 / 50

Page 79: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

17 / 50

Page 80: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

17 / 50

Page 81: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

17 / 50

Page 82: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Operação de Busca

17 / 50

Page 83: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

18 / 50

Page 84: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● Uma outra operação de busca comumente executada em uma árvore binária de busca é encontrar os maiores e menores valores (chaves).

18 / 50

Page 85: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● Uma outra operação de busca comumente executada em uma árvore binária de busca é encontrar os maiores e menores valores (chaves).

● De acordo com a definição de ABB, nós sabemos que o valor mínimo está na raiz ou em algum nó a sua esquerda.

18 / 50

Page 86: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● Uma outra operação de busca comumente executada em uma árvore binária de busca é encontrar os maiores e menores valores (chaves).

● De acordo com a definição de ABB, nós sabemos que o valor mínimo está na raiz ou em algum nó a sua esquerda.

● Existe alguma maneira de fazer a busca pelo menor elemento se ter a necessidade de fazer a comparação individual?

18 / 50

Page 87: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● Como achar o menor valor na ABB abaixo?

19 / 50

Page 88: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● Como achar o menor valor na ABB abaixo?

19 / 50

Page 89: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

20 / 50

Page 90: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● A ideia é que se o nó raiz contém um elemento a sua esquerda, então esse nó não pode ser o menor.

20 / 50

Page 91: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● A ideia é que se o nó raiz contém um elemento a sua esquerda, então esse nó não pode ser o menor.

20 / 50

Page 92: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● A mesma ideia da busca pelo menor valor se aplica à busca do maior valor.

21 / 50

Page 93: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Busca por valores Max e Min

● Código:

22 / 50

Page 94: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

23 / 50

Page 95: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Na construção de uma ABB, as chaves (elementos) são adicionados um por vez.

23 / 50

Page 96: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Na construção de uma ABB, as chaves (elementos) são adicionados um por vez.

● Suponha que vamos inserir a seguinte relação de elementos [60, 25, 100, 35, 17, 80].

23 / 50

Page 97: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

24 / 50

Page 98: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60

24 / 50

Page 99: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60

24 / 50

Page 100: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25

24 / 50

Page 101: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25

24 / 50

Page 102: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25 Inserir 100

24 / 50

Page 103: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25 Inserir 100

24 / 50

Page 104: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35

24 / 50

Page 105: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35

24 / 50

Page 106: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35 Inserir 17

24 / 50

Page 107: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35 Inserir 17

24 / 50

Page 108: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35 Inserir 17 Inserir 80

24 / 50

Page 109: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35 Inserir 17 Inserir 80

24 / 50

Page 110: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

25 / 50

Page 111: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Suponha que vamos inserir a chave 30 na árvore anterior.

25 / 50

Page 112: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Suponha que vamos inserir a chave 30 na árvore anterior.

● O que aconteceria se nós usarmos o função _bstSearch( ) e pesquisarmos pelo nó 30?

25 / 50

Page 113: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Suponha que vamos inserir a chave 30 na árvore anterior.

● O que aconteceria se nós usarmos o função _bstSearch( ) e pesquisarmos pelo nó 30?

25 / 50

Page 114: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Suponha que vamos inserir a chave 30 na árvore anterior.

● O que aconteceria se nós usarmos o função _bstSearch( ) e pesquisarmos pelo nó 30?

A busca não localizará o nó 30.

25 / 50

Page 115: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Suponha que vamos inserir a chave 30 na árvore anterior.

● O que aconteceria se nós usarmos o função _bstSearch( ) e pesquisarmos pelo nó 30?

A busca não localizará o nó 30.

Porém, este será o lugar correto onde a nova chave deverá ser inserida.

25 / 50

Page 116: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Código para inserir um nó na ABB:

26 / 50

Page 117: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Código para inserir um nó na ABB:

27 / 50

Page 118: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

28 / 50

Page 119: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● O método deve pesquisar a localização do novo nó.

28 / 50

Page 120: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● O método deve pesquisar a localização do novo nó.

28 / 50

Page 121: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● O método deve pesquisar a localização do novo nó.

28 / 50

Page 122: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● O método deve pesquisar a localização do novo nó.

28 / 50

Page 123: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

29 / 50

Page 124: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● O caso base é alcançado quando uma subárvore vazia é encontrada.

29 / 50

Page 125: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● O caso base é alcançado quando uma subárvore vazia é encontrada.

29 / 50

Page 126: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

30 / 50

Page 127: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Neste momento, um novo nó da árvore é criado e seus valores são atualizados.

30 / 50

Page 128: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Neste momento, um novo nó da árvore é criado e seus valores são atualizados.

30 / 50

Page 129: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

31 / 50

Page 130: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● A recursão continua...

31 / 50

Page 131: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● A recursão continua...

31 / 50

Page 132: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● A recursão continua...

31 / 50

Page 133: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Inserção

● Até alcançar o nó raiz.

32 / 50

Page 134: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

33 / 50

Page 135: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A operação de remoção é um pouco mais complicada do que as operações de busca ou inserção.

33 / 50

Page 136: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A operação de remoção é um pouco mais complicada do que as operações de busca ou inserção.

● Operações envolvidas na remoção:

33 / 50

Page 137: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A operação de remoção é um pouco mais complicada do que as operações de busca ou inserção.

● Operações envolvidas na remoção:– Localizar o elemento.

33 / 50

Page 138: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A operação de remoção é um pouco mais complicada do que as operações de busca ou inserção.

● Operações envolvidas na remoção:– Localizar o elemento.– Remover o nó da árvore.

33 / 50

Page 139: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A operação de remoção é um pouco mais complicada do que as operações de busca ou inserção.

● Operações envolvidas na remoção:– Localizar o elemento.– Remover o nó da árvore.– Os nós restantes devem preservar a propriedade

de ABB.

33 / 50

Page 140: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Existem três casos a serem considerados antes de remover um nó:– O nó é uma folha.– O nó tem um único filho.– O nó tem dois filhos.

34 / 50

Page 141: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

35 / 50

Page 142: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remoção de nó folha

35 / 50

Page 143: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remoção de nó folha– É o caso mais simples.

35 / 50

Page 144: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remoção de nó folha– É o caso mais simples.– Depois de encontrar o nó, basta removê-lo da ABB.

35 / 50

Page 145: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remoção de nó folha– É o caso mais simples.– Depois de encontrar o nó, basta removê-lo da ABB.

35 / 50

Page 146: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remoção de nó folha– É o caso mais simples.– Depois de encontrar o nó, basta removê-lo da ABB.

35 / 50

Page 147: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

36 / 50

Page 148: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover nó interior com 1 filho

36 / 50

Page 149: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover nó interior com 1 filho

36 / 50

Page 150: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover nó interior com 1 filho– Como seria remover o nó 41?

36 / 50

Page 151: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

37 / 50

Page 152: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

37 / 50

Page 153: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Bastaria que o nó anterior (12) apontasse para NULL?

37 / 50

Page 154: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Bastaria que o nó anterior (12) apontasse para NULL?

37 / 50

Page 155: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

38 / 50

Page 156: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Como o nó 41 tem apenas 1 único filho, então todos os seus descendentes têm chaves maiores do que o nó 12.

38 / 50

Page 157: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Como o nó 41 tem apenas 1 único filho, então todos os seus descendentes têm chaves maiores do que o nó 12.

38 / 50

Page 158: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Como o nó 41 tem apenas 1 único filho, então todos os seus descendentes têm chaves maiores do que o nó 12.

● Assim, basta ligar o nó 12 ao filho do nó 41.

38 / 50

Page 159: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Como o nó 41 tem apenas 1 único filho, então todos os seus descendentes têm chaves maiores do que o nó 12.

● Assim, basta ligar o nó 12 ao filho do nó 41.

38 / 50

Page 160: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

39 / 50

Page 161: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover nó interior com 2 filhos

39 / 50

Page 162: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover nó interior com 2 filhos– Essa é a sua situação mais difícil.

39 / 50

Page 163: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover nó interior com 2 filhos– Essa é a sua situação mais difícil.– O que aconteceria na árvore para remover o nó

12?

39 / 50

Page 164: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover nó interior com 2 filhos– Essa é a sua situação mais difícil.– O que aconteceria na árvore para remover o nó

12?

39 / 50

Page 165: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover nó interior com 2 filhos– Essa é a sua situação mais difícil.– O que aconteceria na árvore para remover o nó

12?

39 / 50

Page 166: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

40 / 50

Page 167: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● O resultado da remoção anterior seria a árvore abaixo.

40 / 50

Page 168: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● O resultado da remoção anterior seria a árvore abaixo.

40 / 50

Page 169: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● O resultado da remoção anterior seria a árvore abaixo.

● O nó 41 teria dois filhos à esquerda.

40 / 50

Page 170: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

41 / 50

Page 171: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover o nó interior com dois filhos:

41 / 50

Page 172: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover o nó interior com dois filhos:– Encontrar o sucessor lógico, S, do nó que será

removido N.

41 / 50

Page 173: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover o nó interior com dois filhos:– Encontrar o sucessor lógico, S, do nó que será

removido N.– Copiar a chave do nó S para N.

41 / 50

Page 174: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover o nó interior com dois filhos:– Encontrar o sucessor lógico, S, do nó que será

removido N.– Copiar a chave do nó S para N.– Remover o nó S da árvore.

41 / 50

Page 175: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Remover o nó interior com dois filhos:– Encontrar o sucessor lógico, S, do nó que será

removido N.– Copiar a chave do nó S para N.– Remover o nó S da árvore.

41 / 50

Page 176: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

42 / 50

Page 177: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A dúvida que surge é:

42 / 50

Page 178: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A dúvida que surge é:– Como encontrar o sucessor de um nó e onde ele

estará localizado na árvore?

42 / 50

Page 179: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A dúvida que surge é:– Como encontrar o sucessor de um nó e onde ele

estará localizado na árvore?– O sucessor é o menor elemento dos elementos que

sejam maiores que o nó que será removido.

42 / 50

Page 180: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● A dúvida que surge é:– Como encontrar o sucessor de um nó e onde ele

estará localizado na árvore?– O sucessor é o menor elemento dos elementos que

sejam maiores que o nó que será removido.– De acordo com as propriedades de uma ABB, o

sucessor de um nó é o seu pai ou algum nó que esteja a sua direita.

42 / 50

Page 181: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Passo 1– Achar o nó N e o seu sucessor S.

43 / 50

Page 182: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Passo 2– Copiar o nó S para N.

44 / 50

Page 183: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Passo 3– Remova o sucessor S que estava à direita.

45 / 50

Page 184: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Remoção

● Passo 4– Remova o sucessor S que estava à direita.

46 / 50

Page 185: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Eficiência das ABB

47 / 50

Page 186: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Exercícios

● Considere a árvore binária de busca abaixo e mostre o resultado após deletar cada uma das seguintes chaves: 14, 52 e 39.

48 / 50

Page 187: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Exercícios

● Discuta a avaliação entre uma implementação de uma lista ordenada e a implementação de uma árvore binária de busca.

● Considere que as chaves 50, 30, 70, 20, 40, 60, 80, 15, 25, 35, 45 e 36 são inseridas, nesta ordem, numa árvore de busca inicialmente vazia. Desenha a árvore resultante.

● O que aconteceria se o nó 30 fosse removido da árvore construída no exercício anterior? Desenhe essa árvore resultante.

49 / 50

Page 188: Árvores Binárias de Buscatiagodemelo.info/wp-content/uploads/2020/09/aula-arvores... · 2020. 9. 10. · Árvore Binária de Busca (ABB) Uma árvore binária de busca (ABB) –

Exercícios

● Escreva uma função em Python para verificar se uma árvore é uma ABB.

● Escreva uma função em Python para verificar se duas ABBs são iguais.

50 / 50