Balanceamento de Ávores
Descrição
O objetivo deste trabalho é aplicar o balanceamento em árvores binárias de pesquisa, com base no critério de árvores AVL.
A ideia é criar árvores através da inserção de nodos (método insere), como no exemplo a seguir.
Antes e depois do processo de balanceamento, devem ser chamados o método de caminhamento central.
Para desenvolver seu trabalho, utilize este código-base.
#include <iostream>
using namespace std;
#include "ABP.h"
int main() {
ABP B;
B.insere(10);
B.insere(6);
B.insere(12);
B.insere(11);
for(int i=15;i<25;i++)
B.insere(i);
B.GeraDOT();
B.AplicaBalancemento();
B.GeraDOT();
return 0;
}
Exibição das Árvores
Além de testar a árvore com o caminhamneto central, o programa deve chamar o método GeraDOT que gera o arquivo no formato DOT, do GraphViz. Este arquivo permite a exibição das árvores através de ferramentas como:
Veja a seguir exemplos de exibições geradas a partir destas ferramentas.
Código
|
Imagem
|
digraph g {
node [shape = record,height=.1];
nodeA[label = "<esq> | A | <dir> "];
nodeB[label = "<esq> | B | <dir> "];
nodeC[label = "<esq> | C | <dir> "];
"nodeA":esq -> "nodeB";
"nodeA":dir -> "nodeC";
}
|
 |
digraph g {
node [shape = record,height=.1];
node6[label = "<esq> | 6 | <dir> "]
node7[label = "<esq> | 7 | <dir> "]
node8[label = "<esq> | 8 | <dir> "]
node9[label = "<esq> | 9 | <dir> "]
node10[label = "<esq> | 10 | <dir> "]
"node7":esq -> "node6"
"node8":esq -> "node7"
"node9":esq -> "node8"
"node10":esq -> "node9"
}
|

|
Data de Entrega
O trabalho, que poderá
ser desenvolvido em duplas, deverá ser entregue no dia 27/11/2020, durante o horário da aula.
Material Adicional Sobre o GraphViz
O formato DOT é originário da ferramenta GraphViz.
Documentação sobre o Graphviz : https://graphviz.readthedocs.io/en/stable/manual.html#custom-dot-statements
JavaScript library for drawing Graphviz graphs to a web browser canvas: https://code.google.com/archive/p/canviz/