Árvore Binária e AVL


Applet que mostra o funcionamento de uma arvore AVL

    AVL tree Applet

Download
Árvore Binária e AVL em Java
Pacote com uma implementacao de uma arvore Binaria e de uma arvore AVL com classes de teste inclusos
ArvoreBinaria.rar
compressed file archive 21.6 KB
  • Desenvolvedor

Raul Joaquim Câmara dos Santos

 

Sugestões e Comentários


Write a comment

Comments: 12
  • #1

    jaini (Friday, 03 June 2011 18:05)

    esse arquivo nao abre no netbens?

  • #2

    rauljcs (Monday, 06 June 2011 08:24)

    Ele funciona em qualquer editor java.

    Geralmente só problemas de compatibilidade de editores quando há componentes GUI e se utiliza de algum plugin para criar. Fora isso, é difícil ter algum problema.
    =]

  • #3

    Amaro (Tuesday, 06 September 2011 08:35)

    Eu estava analisando o tempo de inserir e buscar das duas arvores, eu coloquei para inserir 500.000 elementos na binaria e deu tudo ok, mas na avl dá java.lang.StackOverflowError. na AVl só consegue colocar até uns 30 elementos, depois disso da erro. Por q?, a inserção desses elementos são int[] inseridos um a um.

  • #4

    rauljcs (Tuesday, 06 September 2011 12:10)

    Boa Amaro. Para solucionar, simplesmente altere o tipo do Nó para Long ao invés de int. Caso ainda ocorra stackOverflow, sugiro tratar como String, fazendo a conversão do valor para long quando necessário.



  • #5

    Amaro (Wednesday, 07 September 2011 20:38)

    Valeu, funcionou aqui. Obrigado. Bastou eu trocar tudo por long que funcionou. Bem esse teste que eu fiz foi com números aleatórios. Agora quando eu coloco os numeros ou em ordem crescente ou decrescente dá o mesmo erro... Vc saberia por q?

  • #6

    rauljcs (Wednesday, 07 September 2011 20:46)

    Provavelmente porque a árvore está crescendo para um mesmo lado, antes de ser balanceada. O primitivo de maior tamanho em Java é o Long mesmo. Uma classe que poderia ser usada é a BigInteger no lugar do long, mas não garanto que irá funcionar.
    Para deixar sem limitação, só se fosse tratado como String e feito a conversão quando necessário. Mas isto levaria a uma alteração maior no código.

    Tenta com o BigInteger e vê se dá certo =]

  • #7

    joao (Monday, 05 November 2012 15:45)

    porque não consigo inserir os elementos que eu quero, quero inserir os elementos 99, 44, 71, 80, 74, 63, 59, 120, 98, 150.
    mas da erro...

  • #8

    rauljcs (Monday, 05 November 2012 16:28)

    Tente ser um pouco mais claro, Joao. Qual erro que ocorre? Em que ponto do código?

  • #9

    joao (Monday, 05 November 2012 17:46)

    Meu main ficou assim :

    public static void main(String[] args) {


    //Teste da arvore AVL com JOptionPane
    ArvoreAvl tree2 = new ArvoreAvl(); //nova arvore 99, 44, 71, 80, 74, 63, 59, 120, 98, 150.

    tree2.inserirElemento(99);
    tree2.inserirElemento(44);
    tree2.inserirElemento(71);
    tree2.inserirElemento(80);
    tree2.inserirElemento(74);
    tree2.inserirElemento(63);
    tree2.inserirElemento(59);
    tree2.inserirElemento(120);
    tree2.inserirElemento(98);
    tree2.inserirElemento(150);

    tree2.removerElemento(59);
    tree2.removerElemento(63);



    }

  • #10

    joao (Monday, 05 November 2012 17:47)

    Tenho essa questão para responder :
    1. Partindo de uma árvore AVL vazia, realize a inserção da seguinte sequência de chaves:
    99, 44, 71, 80, 74, 63, 59, 120, 98, 150.
    Redesenhe a árvore a cada inserção. Indique para cada rotação feita, o nome da rotação e o
    nó desregulado. Indique as árvores resultantes da exclusão dos nós 59 e 63.

    usei o teu codigo, mas da erro
    Exception in thread "main" java.lang.StackOverflowError
    at RaulJoaquim.ArvoreBinaria.exibirArvorePreOrdem(ArvoreBinaria.java:186)
    at RaulJoaquim.ArvoreBinaria.exibirArvorePreOrdem(ArvoreBinaria.java:187)

  • #11

    Everton Silva (Thursday, 08 November 2012 13:00)

    cara parabens voce e o cara continue assim parabens

  • #12

    rauljcs (Thursday, 08 November 2012 13:08)

    Joao,
    A Árvore AVL possui uma inconsistência na remoção. Talvez seja isso. Deve até estar comentado no projeto.

    tente inserir e remover aos poucos para ver o que acontece.