Descrição do Programa em Python - Árvore AVL
Introdução
Este programa implementa uma Árvore AVL em Python, oferecendo uma interface interativa para manipulação de estruturas de dados balanceadas. As árvores AVL são árvores binárias de busca autobalanceadas que mantêm o fator de balanceamento entre os nós, garantindo operações eficientes de busca, inserção e remoção com complexidade de tempo O(log n).
Funcionalidades
- Criação de Árvore Vazia: Permite iniciar uma nova árvore AVL sem elementos.
- Inserção de Elementos: Adiciona elementos individuais à árvore, mantendo-a balanceada através de rotações necessárias.
- Remoção de Elementos: Remove elementos especificados da árvore, ajustando o balanceamento conforme necessário.
- Travessias da Árvore:
- Pré-Ordem: Visita o nó atual antes dos nós filhos.
- Pós-Ordem: Visita os nós filhos antes do nó atual.
- Em Ordem (In-Order): Visita os nós em ordem crescente de valor.
- Visualização Gráfica: Exibe a estrutura da árvore graficamente utilizando a biblioteca
matplotlib. - Busca de Elementos: Pesquisa por um elemento específico dentro da árvore.
- Edição de Elementos: Permite alterar o valor de um nó existente na árvore.
- Balanceamento Automático: A árvore AVL se autobalanceia após operações de inserção e remoção.
- Inserção de Números Aleatórios: Insere entre 8 e 15 números aleatórios na árvore para fins de demonstração ou teste.
Como Utilizar
1. Requisitos Pré-existentes
-
Python 3.x instalado no sistema.
-
Biblioteca matplotlib instalada:
pip install matplotlib
2. Execução do Programa
Execute o script binaryTree.py através do terminal ou prompt de comando:
```bash
python binaryTree.py
```
3. Interação com o Menu
O programa apresenta um menu interativo com as seguintes opções:
- Criar árvore vazia
- Inserir um elemento
- Excluir um elemento
- Exibir a árvore em pré-ordem
- Exibir a árvore em pós-ordem
- Exibir a árvore em ordem simétrica (em-ordem)
- Visualizar a árvore
- Buscar um elemento
- Editar um elemento
- Balancear a árvore
- Inserir números aleatórios na árvore
- Sair
Selecione a opção desejada digitando o número correspondente e pressionando Enter.
4. Operações Comuns
- Inserir Elemento: Escolha a opção 2 e insira o número que deseja adicionar à árvore.
- Remover Elemento: Escolha a opção 3 e informe o número que deseja remover.
- Visualizar Árvore: Use a opção 7 para ver a representação gráfica da árvore.
- Inserir Números Aleatórios: Utilize a opção 11 para popular a árvore com valores aleatórios.
Detalhes Técnicos
Estrutura do Nó (No)
Cada nó possui:
dado: Valor armazenado no nó.esquerda: Referência para o filho à esquerda.direita: Referência para o filho à direita.altura: Altura do nó para fins de balanceamento.
Balanceamento da Árvore
- Utiliza rotações simples e duplas (rotação à esquerda, à direita, esquerda-direita e direita-esquerda) para manter o fator de balanceamento dentro de -1 e 1.
- O balanceamento é automático durante as operações de inserção e remoção.
Visualização Gráfica
- Implementada através da biblioteca
matplotlib. - Representa os nós como caixas com valores e linhas conectando os nós pai e filhos.
Aplicações e Benefícios
- Eficiência: Operações de busca, inserção e remoção com complexidade O(log n).
- Educação: Ideal para fins educacionais, auxiliando na compreensão de árvores binárias e balanceamento AVL.
- Flexibilidade: Pode ser adaptado ou expandido para incluir funcionalidades adicionais ou integrar com outros sistemas.
Considerações Finais
- Tratamento de Erros: O programa inclui verificações básicas, mas presume que o usuário fornecerá entradas válidas.
- Valores Duplicados: Não são permitidos na árvore AVL para manter a propriedade de unicidade dos elementos.
- Compatibilidade: Desenvolvido para ser executado em ambientes Windows, Linux e macOS com Python 3.x instalado.