Algoritmos e Estruturas de Dados 2 Unidade 1: Árvores binárias Rafael Beserra Gomes Universidade Federal do Rio Grande do Norte Material compilado em 21 de fevereiro de 201. Licença desta apresentação: http://creativecommons.org/licenses/
Nó de uma árvore binária Um nó de uma árvore binária contém: chave, filho esquerdo, filho direito e pai. pai ch e d
Exemplo Exemplo 8 6 7
Árvore binária de busca Na árvore binária de busca: a chave do nó atual é maior ou igual à chave esquerda e menor ou igual à chave direita. 7 6 9 Operações: buscar, mínimo, máximo, sucesso e predecessor
Percurso 1. Percurso em ordem 1 v i s i t a r ( node n ) { 2 v i s i t a r ( n. esq ) escreva ( n. chave ) 4 v i s i t a r ( n. d i r ) } 7 6 9
Percurso 2. Percurso pré-ordem 1 v i s i t a r ( node n ) { 2 escreva ( n. chave ) v i s i t a r ( n. esq ) 4 v i s i t a r ( n. d i r ) } 7 6 9
Percurso. Percurso pós-ordem 1 v i s i t a r ( node n ) { 2 v i s i t a r ( n. esq ) v i s i t a r ( n. d i r ) 4 escreva ( n. chave ) } 7 6 9
Introdução : Como encontrar um nó com uma chave específica? Suponha que estamos em busca do nó com chave 6. Iniciamos a busca pela raiz. Não está na raiz. Como 6 é maior que esta chave, caso exista, deve estar na subárvore direita. 7 6 9
Introdução : Como encontrar um nó com uma chave específica? Suponha que estamos em busca do nó com chave 6. 7 6 9 A raiz da subárvore direita tem chave 7. Não é a chave que procuramos. Então, caso exista, deve estar na subárvore esquerda.
Introdução : Como encontrar um nó com uma chave específica? Suponha que estamos em busca do nó com chave 6. 7 A raiz da subárvore esquerda tem a chave 6. 6 9
Introdução Mínimo: Como encontrar a menor chave da árvore? Começamos pela raiz. Como temos uma subárvore esquerda, esta chave não é a menor. O mínimo está na subárvore esquerda. 7 6 9
Introdução Mínimo: Como encontrar a menor chave da árvore? Ainda temos uma subárvore esquerda, esta não é chave mínima. O mínimo está na subárvore esquerda. 7 6 9
Introdução Mínimo: Como encontrar a menor chave da árvore? 7 Por fim, não temos mais uma subárvore esquerda, então esta é chave mínima. 6 9
Como encontrar o predecessor e sucessor de uma chave na árvore? Considerando que existe uma ordem crescente de chaves: Sucessor é a chave que segue a chave atual na ordem crescente das chaves. Predecessor é a chave que antecede a chave atual na ordem crescente das chaves.
20 Exemplo: vamos encontrar o sucessor de 20. 14 0 10 19 2 2 12 17 1 16 18
20 Quais chaves são maiores que 20? Somente a subárvore direita, pois este nó não tem pai. Quem é o sucessor? 14 0 10 19 2 2 12 17 1 16 18
20 0 10 2 2 8 16 1 7 9 18 Exemplo: vamos encontrar o sucessor de 18. O sucessor não é nenhum dos filhos.
20 0 10 2 2 8 16 1 7 9 18 O sucessor está nessa subárvore?
20 0 10 2 2 8 16 1 7 9 18 O sucessor está nessa subárvore?
20 0 10 2 2 8 16 1 7 9 18 O sucessor está nessa subárvore?
20 O sucessor está nessa subárvore? Já descartamos a subárvore esquerda. Então quem é o sucessor? 0 10 2 2 8 16 1 7 9 18
Introdução : caso a árvore esteja vazia, o nó adicionado é único. Caso tenha algum nó, o novo nó é adicionado como filho de algum nó existente. Vamos inserir o nó 8. Começamos pela raiz. O nó deve estar na subárvore direita. 7 6 9
Introdução 7 O novo nó deve estar na subárvore direita. 6 9
Introdução 7 6 9 O novo nó deve estar na subárvore esquerda. 8
Introdução Como realizar a eliminação de um nó na árvore binária? 20 14 0 10 19 2 2 12 17 1 Se o nó não tem filho, a remoção é imediata 16 18
Introdução 20 14 0 10 19 2 2 Se o nó tem apenas um filho. Esse filho substitui o pai 12 17 1 16 18
Introdução 20 Se o nó contém 2 filhos, é substituido pelo seu sucessor. 14 0 10 19 2 1 12 17 E o filho único (se houver) do sucessor substitui seu pai. 16 18