Árvores Binárias de Pesquisa (ABP) Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Post on 17-Apr-2015

107 views 2 download

Transcript of Árvores Binárias de Pesquisa (ABP) Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com.

Árvores Binárias de Pesquisa (ABP)

Prof. Alexandre Parra Carneiro da Silva

parrasilva@gmail.com

Roteiro

Definição de ABP

Operações sobre ABP

Análise de Complexidade de ABPs

Roteiro

Definição de ABP

Operações sobre ABP

Análise de Complexidade de ABPs

Definição

Uma árvore binária de pesquisa (ou de busca) obedece à seguinte propriedade: Seja x um nó de uma ABP. Se y é o nó raiz

da sae de x, então chave[y] chave[x]. Se y é o nó raiz da sad de x, então chave[y] > chave[x].

Roteiro

Definição de ABP

Operações sobre ABP

Análise de Complexidade de ABPs

Operações sobre ABP

As principais operações são: Consulta; Inserção; Remoção.

As operações inserção e remoção devem ser realizadas respeitando a propriedade das ABP.

Consulta de nós (1)

Consulta com sucesso. Exemplo: Na ABP abaixo, consultar os dados

referenciados pelo nó de valor 3.

4

1 6

3

2

5 7

4

1

3

Consulta de nós (2)

Consulta sem sucesso. Exemplo: Na ABP abaixo, consultar os dados

referenciados pelo nó de valor 9.

4

1 6

3

2

5 7

4

6

7

Inserção de nós (1) Esta operação identifica a posição correta e insere. A ordem em que os valores são inseridos é

relevante. Exemplo 1: Inserir os nós 14 e 15. Exemplo 2: Inserir os nós 15 e 14.

14 15

14

12

16

10

9 1 7

2 8

4

3

raiz

11 15

12

16

10

9 1 7

2 8

4

3

raiz

11

Exemplo 1 Exemplo 2

Inserção de nós (2) Exemplo: Construir uma ABP a partir da seguinte

lista de valores: 4,1,6,5,3,2 e 7.

4

1 6

3

2

5 7

Remoção de nós

Três casos distintos a serem tratados: nó a ser removido tem zero, um ou dois filhos.

Remoção de nós – Caso 1

Caso 1: nodo a ser removido tem zero filhos Simplesmente remove o nodo

12

16

10

9 1 7

2 8

4

3

raiz

11

12

16

10 raiz

9 1 7

2 8

4

3

Após a remoção

Remoção de nós – Caso 2

Caso 2: nodo a ser removido tem um filho Substitui o nodo por seu filho

12

16

10

9 1 7

2 8

4

3

raiz

11

11

16

10 raiz

9 1 7

2 8

4

3

Após a remoção

Remoção de nós – Caso 3

Caso 3: nodo a ser removido tem dois filhos Substitui o nodo por seu sucessor

11

16

10 raiz

9 1

2 8

7

3

Após a remoção

16

10

9 1 7

2 8

4

3

raiz

11

12

nodo sucessor

Pergunta: Poderíamos ter feito a substituição pelo nodo antecessor?

Nodo Sucessor e Antecessor

Considerando que as chaves sejam todas distintas: O sucessor de um nodo x é o nodo y, tal

que chave[y] é o menor valor maior que chave[x].

O antecessor de um nodo x é o nodo y, tal que chave[y] é o maior valor menor que chave[x].

Roteiro

Definição de ABP

Operações sobre ABP

Análise de Complexidade de ABPs

Análise de complexidade (1) Com relação a pesquisa Depende da quantidade de nós

internos que eu precise visitar. Qual é a complexidade de uma busca com sucesso?

Depende da ordem de inserção dos nós ao construir uma ABP.

Figura 1

Figura 2

4, 6, 2, 5, 1, 7, 3 1, 2, 3, 4, 5, 6, 7

Análise de complexidade (2) Complexidade de uma busca sem sucesso

Melhor Caso: Árvore binária perfeita: O(log n) Figura 1 Árvore não balanceada: O(n) Figura 2

Figura 1

Figura 2

4, 6, 2, 5, 1, 7, 3 1, 2, 3, 4, 5, 6, 7