This content is protected, please login and enroll in the course to view this content!
2 Comments
dudz
9 de junho de 2018
Boa noite! Com a implementação sugerida, os métodos verificaBalanceamento e calcularBalanceamento estão percorrendo a árvore toda em pré-ordem, com número de operações proporcional ao número de elementos, eliminando os ganhos obtidos com as rotações que mantêm a árvore balanceada. Imagino que seria mais adequado manter as verificações de balanceamento e ajustes necessários no método inserir, após a chamada recursiva, já que apenas no caminho percorrido poderá haver algum desbalanceamento. Assim cada inserção garantiria número de operações proporcional a log(n), garantindo a manutenção do balanceamento sem percorrer toda a árvore. De qualquer forma, muito bom o vídeo, didático na implementação das rotações. Parabéns!
Salve Eduardo, beleza?
você tem razão no seu comentário, está perfeito!
Mas no meu caso, foi como eu disse na aula… o código precisa de ajustes. Esse conteúdo foi apenas para demonstrar a rotação e o balanceamento. Eu acabei “forçando” a recursividade do código para justamente mostrar o cálculo dos valores dos balanceamentos. Existe uma outra versão do código que retorna, ao inserir, a árvore já balanceada exatamente no nó que houve o desbalanceamento, aproveitando justamente o ganho da árvore estar organizada e também não forçando operações desnecessárias.
2 Comments
Boa noite! Com a implementação sugerida, os métodos verificaBalanceamento e calcularBalanceamento estão percorrendo a árvore toda em pré-ordem, com número de operações proporcional ao número de elementos, eliminando os ganhos obtidos com as rotações que mantêm a árvore balanceada. Imagino que seria mais adequado manter as verificações de balanceamento e ajustes necessários no método inserir, após a chamada recursiva, já que apenas no caminho percorrido poderá haver algum desbalanceamento. Assim cada inserção garantiria número de operações proporcional a log(n), garantindo a manutenção do balanceamento sem percorrer toda a árvore. De qualquer forma, muito bom o vídeo, didático na implementação das rotações. Parabéns!
Salve Eduardo, beleza?
você tem razão no seu comentário, está perfeito!
Mas no meu caso, foi como eu disse na aula… o código precisa de ajustes. Esse conteúdo foi apenas para demonstrar a rotação e o balanceamento. Eu acabei “forçando” a recursividade do código para justamente mostrar o cálculo dos valores dos balanceamentos. Existe uma outra versão do código que retorna, ao inserir, a árvore já balanceada exatamente no nó que houve o desbalanceamento, aproveitando justamente o ganho da árvore estar organizada e também não forçando operações desnecessárias.
E valeu mesmo pelo comentário! Show de bola!