2. Árvore completamente balanceada
• Nós folha (externos) aparecem em no máximo dois níveis diferentes
• Minimiza o tempo médio de pesquisa
• Assumindo distribuição uniforme das chaves
• Problema: manter árvore completamente balanceada após cada inserção é
muito caro
3. Árvore completamente balanceada
• Para inserir a chave 1 na árvore do exemplo à esquerda e obter a árvore à
direita do mesmo exemplo é necessário movimentar todos os nós da árvore
original
4. Árvores “quase balanceadas”
• Solução intermediária que mantém a árvore “quase balanceada”, em vez de tentar
manter a árvore completamente balanceada.
• Oferece bons tempos de pesquisa, próximos ao tempo ótimo da arvore
completamente balanceada, com um custo menor para manter o balanceamento.
• Exemplos de restrições aplicadas a árvores para fazê-las “quase balanceadas”
• Fazer que todas as folhas aparecem no mesmo nível
• Restringir a diferença entre as alturas das subárvores de cada nó
• Minimizar o comprimento do caminho interno da árvore
5. Árvores SBB
(Symmetric Binary B-trees)
• Uma árvore SBB é uma árvore binária com apontadores verticais e
horizontais, tal que:
• Todos os caminhos da raiz até cada nó externo possuem o mesmo número de
apontadores verticais.
• Não podem existir dois apontadores horizontais sucessivos.
7. • A chave a ser inserida é sempre inserida após o apontador vertical
mais baixo na árvore.
• Dependendo da situação anterior à inserção podem aparecer dois
apontadores horizontais.
• Neste caso: é necessário realizar uma transformação.
8. • Transformações para manter as propriedades da árvore SBB caso ocorra dois
ponteiros horizontais consecutivos:
9. Árvores SBB
Estrutura e dicionário
• Diferenças da árvore sem balanceamento:
• constantes Horizontal e Vertical : representam as inclinações das referências às
subárvores;
• campo propSBB: utilizado para verificar quando a propriedade SBB deixa de ser
satisfeita
• campos incE e incD: indicam o tipo de referência (horizontal ou vertical) que sai do nó.