Ávores AVL MC 202 – Estruturas de dados Cristiano Damaschio Ferreira [email protected] Introdução Árvore binária de busca Introdução Árvore binária de busca AVL |HR – HL| < 2 Exemplos: h=2 h=1 h=0 É AVL h=0 h=0 AVL |HR – HL| < 2 Exemplos: h=2 NÃO É AVL h=1 h=0 h=0 AVL Fator de balanceamento b = HR – HL Exemplo: b=0 b=0 b=0 b = +1 b=0 b=0 AVL Inserção Semelhante à inserção em árvore binária de busca Pode desbalancear a árvore AVL Exemplo Inserção do valor 5 b=0 b = -1 b=0 b=0 b = +1 b = -2 b=0 b = -1 b=0 b = +1 b=0 AVL Caso a AVL Caso b AVL Caso c AVL Caso d AVL Remanejamento das árvores Rotação simples à direita Rotação dupla à direita Rotação simples à esquerda Rotação dupla à esquerda AVL Rotação simples à direita AVL Rotação simples à direita ne é colocado na raiz EE permanece a sub-árvore esquerda de ne n torna-se a raiz da sub-árvore direita de ne ED torna-se sub-árvore esquerda de n D permanece a sub-árvore direita de n AVL Rotação dupla à direita AVL O caso c é similar ao caso a AVL O caso d é similar ao caso b AVL A remoção é similar à remoção em árvore binária de busca Primeiro, busca-se o nó que contém o valor a ser removido. Se o nó for folha, remove-o Se o nó possuir um filho, esse filho substitui o nó Senão, busca-se a menor (maior) folha da sub-árvore direita (esquerda) do nó, substitui o nó por essa folha AVL A remoção pode desbalancear a árvore Exemplo 1: remover 25 AVL Exemplo 1 AVL Exemplo 1 AVL Exemplo 2: Retirar 70 AVL Exemplo 2: AVL Exemplo 2: AVL Exemplo 3: Retirar 50 AVL Exemplo 3: AVL Exemplo 3: AVL Exemplo 3: AVL Exemplo 3: