Balanceamento de Ávores

Prof. Márcio Sarroglia Pinho

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/