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

Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

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 Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

2/186

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.

Page 3: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

3/186

Árvores Binárias de Busca

Page 4: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

4/186

Introdução

Page 5: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

5/186

Introdução

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

Page 6: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

6/186

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.

Page 7: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

7/186

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.

Page 8: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

8/186

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.

Page 9: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

9/186

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.

Page 10: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

10/186

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.

Page 11: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

11/186

Árvore Binária de Busca (ABB)

Page 12: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

12/186

Á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:

Page 13: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

13/186

Á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.

Page 14: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

14/186

Á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.

Page 15: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

15/186

Árvore Binária de Busca (ABB)

● Exemplo de ABB:

Page 16: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

16/186

Árvore Binária de Busca (ABB)

● Exemplo de ABB:

Page 17: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

17/186

Árvore Binária de Busca (ABB)

● Exemplo de ABB:

1 → 4 → 12 → 23 → 29 → 37 → 41 → 60 → 71 → 84 → 90 → 100

Page 18: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

18/186

Árvore Binária de Busca (ABB)

Page 19: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

19/186

Árvore Binária de Busca (ABB)

● Observações:

Page 20: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

20/186

Árvore Binária de Busca (ABB)

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

armazenamento de chaves duplicadas.

Page 21: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

21/186

Á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.

Page 22: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

22/186

Á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.

Page 23: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

23/186

Á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.

Page 24: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

24/186

Á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..

Page 25: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

25/186

TAD de ABB

Page 26: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

26/186

TAD de ABB

Page 27: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

27/186

TAD de ABB

Page 28: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

28/186

TAD de ABB

Page 29: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

29/186

TAD de ABB

Page 30: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

30/186

TAD de ABB

O que é um iterador?

Page 31: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

31/186

TAD de ABB

O que é um iterador?

É qualquer tipo que permita uso

de loop (for).

Page 32: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

32/186

TAD de ABB

Page 33: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

33/186

TAD de ABB

Page 34: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

34/186

Operação de Busca

Page 35: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

35/186

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).

Page 36: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

36/186

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:

Page 37: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

37/186

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.

Page 38: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

38/186

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 é:

Page 39: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

39/186

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?

Page 40: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

40/186

Operação de Busca

Page 41: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

41/186

Operação de Busca

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

Page 42: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

42/186

Operação de Busca

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

Page 43: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

43/186

Operação de Busca

Page 44: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

44/186

Operação de Busca

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

Page 45: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

45/186

Operação de Busca

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

Page 46: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

46/186

Operação de Busca

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

Page 47: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

47/186

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.

Page 48: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

48/186

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.

Page 49: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

49/186

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.

Page 50: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

50/186

Operação de Busca

Page 51: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

51/186

Operação de Busca

● Suponha que vamos buscar o elemento 29:

Page 52: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

52/186

Operação de Busca

● Suponha que vamos buscar o elemento 29:

Page 53: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

53/186

Operação de Busca

● Suponha que vamos buscar o elemento 29:

Page 54: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

54/186

Operação de Busca

● Suponha que vamos buscar o elemento 29:

Page 55: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

55/186

Operação de Busca

● Suponha que vamos buscar o elemento 29:

Page 56: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

56/186

Operação de Busca

● Suponha que vamos buscar o elemento 29:

Page 57: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

57/186

Operação de Busca

● Suponha que vamos buscar o elemento 29:

Page 58: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

58/186

Operação de Busca

● Suponha que vamos buscar o elemento 29:

Page 59: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

59/186

Operação de Busca

Page 60: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

60/186

Operação de Busca

● Suponha que vamos buscar o elemento 68:

Page 61: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

61/186

Operação de Busca

● Suponha que vamos buscar o elemento 68:

Page 62: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

62/186

Operação de Busca

● Suponha que vamos buscar o elemento 68:

Page 63: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

63/186

Operação de Busca

● Suponha que vamos buscar o elemento 68:

Page 64: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

64/186

Operação de Busca

● Suponha que vamos buscar o elemento 68:

Page 65: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

65/186

Operação de Busca

● Suponha que vamos buscar o elemento 68:

Page 66: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

66/186

Operação de Busca

● Suponha que vamos buscar o elemento 68:

Page 67: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

67/186

Operação de Busca

● Suponha que vamos buscar o elemento 68:

NULL

Page 68: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

68/186

Operação de Busca

Page 69: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

69/186

Operação de Busca

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

Page 70: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

70/186

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.

Page 71: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

71/186

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!!!

Page 72: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

72/186

Operação de Busca

Page 73: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

73/186

Operação de Busca

● A função tem dois casos base:

Page 74: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

74/186

Operação de Busca

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

Page 75: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

75/186

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.

Page 76: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

76/186

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á:

Page 77: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

77/186

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

Page 78: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

78/186

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.

Page 79: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

79/186

Operação de Busca

Page 80: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

80/186

Operação de Busca

Page 81: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

81/186

Operação de Busca

Page 82: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

82/186

Operação de Busca

Page 83: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

83/186

Busca por valores Max e Min

Page 84: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

84/186

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).

Page 85: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

85/186

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.

Page 86: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

86/186

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?

Page 87: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

87/186

Busca por valores Max e Min

● Como achar o menor valor na ABB abaixo?

Page 88: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

88/186

Busca por valores Max e Min

● Como achar o menor valor na ABB abaixo?

Page 89: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

89/186

Busca por valores Max e Min

Page 90: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

90/186

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.

Page 91: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

91/186

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.

Page 92: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

92/186

Busca por valores Max e Min

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

Page 93: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

93/186

Busca por valores Max e Min

● Código:

Page 94: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

94/186

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].

Page 95: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

95/186

Inserção

Page 96: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

96/186

Inserção

Inserir 60

Page 97: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

97/186

Inserção

Inserir 60

Page 98: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

98/186

Inserção

Inserir 60 Inserir 25

Page 99: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

99/186

Inserção

Inserir 60 Inserir 25

Page 100: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

100/186

Inserção

Inserir 60 Inserir 25 Inserir 100

Page 101: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

101/186

Inserção

Inserir 60 Inserir 25 Inserir 100

Page 102: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

102/186

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35

Page 103: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

103/186

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35

Page 104: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

104/186

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35 Inserir 17

Page 105: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

105/186

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35 Inserir 17

Page 106: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

106/186

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35 Inserir 17 Inserir 80

Page 107: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

107/186

Inserção

Inserir 60 Inserir 25 Inserir 100

Inserir 35 Inserir 17 Inserir 80

Page 108: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

108/186

Inserção

Page 109: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

109/186

Inserção

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

Page 110: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

110/186

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?

Page 111: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

111/186

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?

Page 112: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

112/186

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.

Page 113: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

113/186

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.

Page 114: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

114/186

Inserção

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

Page 115: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

115/186

Inserção

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

Page 116: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

116/186

Inserção

Page 117: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

117/186

Inserção

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

Page 118: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

118/186

Inserção

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

Page 119: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

119/186

Inserção

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

Page 120: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

120/186

Inserção

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

Page 121: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

121/186

Inserção

Page 122: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

122/186

Inserção

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

Page 123: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

123/186

Inserção

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

Page 124: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

124/186

Inserção

Page 125: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

125/186

Inserção

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

Page 126: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

126/186

Inserção

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

Page 127: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

127/186

Inserção

Page 128: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

128/186

Inserção

● A recursão continua...

Page 129: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

129/186

Inserção

● A recursão continua...

Page 130: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

130/186

Inserção

● A recursão continua...

Page 131: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

131/186

Inserção

● Até alcançar o nó raiz.

Page 132: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

132/186

Remoção

Page 133: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

133/186

Remoção

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

Page 134: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

134/186

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:

Page 135: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

135/186

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.

Page 136: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

136/186

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.

Page 137: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

137/186

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.

Page 138: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

138/186

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.

Page 139: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

139/186

Remoção

Page 140: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

140/186

Remoção

● Remoção de nó folha

Page 141: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

141/186

Remoção

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

Page 142: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

142/186

Remoção

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

Page 143: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

143/186

Remoção

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

Page 144: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

144/186

Remoção

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

Page 145: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

145/186

Remoção

Page 146: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

146/186

Remoção

● Remover nó interior com 1 filho

Page 147: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

147/186

Remoção

● Remover nó interior com 1 filho

Page 148: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

148/186

Remoção

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

Page 149: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

149/186

Remoção

Page 150: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

150/186

Remoção

Page 151: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

151/186

Remoção

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

Page 152: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

152/186

Remoção

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

Page 153: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

153/186

Remoção

Page 154: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

154/186

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.

Page 155: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

155/186

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.

Page 156: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

156/186

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.

Page 157: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

157/186

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.

Page 158: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

158/186

Remoção

Page 159: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

159/186

Remoção

● Remover nó interior com 2 filhos

Page 160: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

160/186

Remoção

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

Page 161: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

161/186

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?

Page 162: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

162/186

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?

Page 163: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

163/186

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?

Page 164: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

164/186

Remoção

Page 165: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

165/186

Remoção

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

Page 166: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

166/186

Remoção

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

Page 167: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

167/186

Remoção

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

● O nó 41 teria dois filhos à esquerda.

Page 168: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

168/186

Remoção

Page 169: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

169/186

Remoção

● Remover o nó interior com dois filhos:

Page 170: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

170/186

Remoção

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

removido N.

Page 171: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

171/186

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.

Page 172: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

172/186

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.

Page 173: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

173/186

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.

Page 174: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

174/186

Remoção

Page 175: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

175/186

Remoção

● A dúvida que surge é:

Page 176: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

176/186

Remoção

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

estará localizado na árvore?

Page 177: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

177/186

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.

Page 178: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

178/186

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.

Page 179: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

179/186

Remoção

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

Page 180: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

180/186

Remoção

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

Page 181: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

181/186

Remoção

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

Page 182: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

182/186

Remoção

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

Page 183: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

183/186

Eficiência das ABB

Page 184: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

184/186

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.

Page 185: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

185/186

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.

Page 186: Árvores Binárias de Busca - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/05/aula-arvores-busca.pdf · 10/186 Introdução Busca (pesquisa) de dados em texto é uma operação

186/186

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.