Questão nº 75
Questão de TI - Soluções · FGV EPE 2024 (nº 75)
Considere o algoritmo a seguir, escrito em pseudocódigo, para inserir um novo valor z em uma árvore de busca binária A com n nós e altura h.
1 y = NULL
2 x = A.raiz
3 ENQUANTO x ≠ NULL FAÇA:
4 y = x
5 SE z.chave < x.chave: x = x.esquerda
6 SE NÃO: x = x.direita
7 z.p = y
8 SE y = NULL: A.raiz = z
9 SE NÃO:
10 SE z.chave < y.chave: y.esquerda = z
11 SE NÃO: y.direita = z
O algoritmo acima é executado no tempo
- AO(n)
- BO(log n)
- CO(n log n)
- DO(h) (alternativa correta)
- EO(log h)
Resposta comentada
Gabarito Alternativa D
Uma árvore de busca binária (BST) organiza seus dados de forma que, para qualquer nó, todos os valores na sua subárvore esquerda são menores e todos na subárvore direita são maiores. Inserir um novo valor significa encontrar o local correto para ele, seguindo essa regra, percorrendo um caminho da raiz até uma folha (ou onde a folha deveria estar).
Análise do algoritmo:
O algoritmo começa na raiz (A.raiz) e desce pela árvore (x = x.esquerda ou x = x.direita) até encontrar o lugar onde o novo nó z deve ser inserido. A cada passo do laço ENQUANTO, ele se move um nível abaixo na árvore. O laço para quando x se torna NULL, indicando que o nó pai (y) para z foi encontrado. O número de iterações do laço é diretamente proporcional ao número de níveis que ele percorre, que é no máximo a altura da árvore. As operações fora do laço (inicialização e atribuição final do nó) levam tempo constante.
Tempo de execução:
O tempo de execução é dominado pelo laço ENQUANTO. Este laço executa comparações e atribuições, que são operações de tempo constante. O número de vezes que o laço é executado é igual ao número de nós visitados no caminho da raiz até o ponto de inserção. No pior caso, esse caminho pode ter o comprimento da altura da árvore.
(A) Incorreta: implicaria que o algoritmo visitaria todos os nós da árvore, o que não é necessário para a inserção em uma BST.
(B) Incorreta: Esta seria a complexidade para uma BST balanceada (onde a altura é ), mas o algoritmo é para uma BST geral, onde a altura pode ser tão grande quanto (no caso de uma árvore degenerada ou "torta"). A pegadinha é associar automaticamente BST com , sem considerar a altura real da árvore.
(C) Incorreta: é geralmente associado a algoritmos de ordenação ou operações mais complexas que envolvem múltiplos percursos ou estruturas auxiliares. A inserção é um único percurso.
(D) Correta: O algoritmo percorre um único caminho da raiz até o ponto de inserção do novo nó. O número máximo de passos nesse caminho é determinado pela altura da árvore (). Cada passo (comparação e movimento para esquerda/direita) leva tempo constante. Portanto, o tempo total é proporcional à altura da árvore, ou seja, .
(E) Incorreta: significaria que o tempo de execução cresceria logaritmicamente com a altura, o que não corresponde a um percurso linear da raiz até a folha. Se a altura é , o número de passos é , não .
Fonte: FGV EPE 2024 Analista de Gestão Corporativa - TI - Soluções (Caderno Tipo 1). Reproduzida para fins de estudo.