Foto de Eduardo L.
Eduardo há 1 ano
Enviada pelo
Site

Árvores binárias de busca

11) Com base na lógica de Árvores Binárias de Busca, considere que se tem uma classe BST
com o método getRoot(), que retorna um objeto da classe BSTNode, que, por sua vez,
possui os seguintes métodos disponíveis: isNIL() — retornando um booleano —,
getData() — retornando um inteiro — e getLeft() e getRight() — que retornam um
objeto da classe BSTNode. Escreva um método em Java que, dada uma árvore do tipo BST,
calcule a diferença entre o maior e o menor número inteiro armazenados na árvore.
Comente o comportamento assintótico do seu método.


int maiorDiferenca(BST arvore) {
//...
}

1 resposta
Professora Ilze O.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 1 ano
Contatar Ilze

Para calcular a diferença entre o maior e o menor número inteiro armazenados em uma árvore BST, podemos percorrer a árvore de forma recursiva, mantendo uma variável que armazena o valor máximo encontrado até o momento e outra variável que armazena o valor mínimo encontrado até o momento. A cada nó visitado, comparamos o valor do nó com as variáveis de máximo e mínimo e atualizamos as variáveis se necessário.

Segue abaixo a implementação do método em Java:

 

public int diferencaMinMax(BSTNode root) {
    if (root.isNIL()) {
        return 0;
    }
    int min = root.getData();
    int max = root.getData();
    if (!root.getLeft().isNIL()) {
        int diffLeft = diferencaMinMax(root.getLeft());
        if (diffLeft < min) {
            min = diffLeft;
        }
        if (diffLeft > max) {
            max = diffLeft;
        }
    }
    if (!root.getRight().isNIL()) {
        int diffRight = diferencaMinMax(root.getRight());
        if (diffRight < min) {
            min = diffRight;
        }
        if (diffRight > max) {
            max = diffRight;
        }
    }
    return max - min;
}

 

O comportamento assintótico do método depende da estrutura da árvore BST. Em uma árvore balanceada, a complexidade é O(log n), já que a cada nível da árvore a quantidade de nós a serem visitados é reduzida pela metade. Em uma árvore não balanceada, a complexidade pode chegar a O(n), caso a árvore esteja totalmente desbalanceada em uma das direções.

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Envie uma dúvida grátis
Resposta na hora da Minerva IA e de professores particulares
Enviar dúvida
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Precisa de outra solução? Conheça
Aulas particulares Encontre um professor para combinar e agendar aulas particulares Buscar professor