Menu
CoddyTech

Lowest Common Ancestor of a BST

Você recebe uma árvore de busca binária armazenada no formato heap no array tree: a raiz está no índice 0, os filhos do índice i estão em 2*i+1 (esquerda) e 2*i+2 (direita), e -1 marca uma posição vazia. Todo valor em um nó da subárvore esquerda é menor que o valor do nó, e todo valor em sua subárvore direita é maior.

Escreva lowestCommonAncestor, que retorna o valor do ancestral comum mais baixo dos valores p e q, ambos na árvore: o nó mais profundo que tem ambos em sua subárvore. Um nó faz parte da própria subárvore, então, se p estiver acima de q, a resposta será p.

Função

lowestCommonAncestor(tree: integer-array, p: integer, q: integer) → integer
treeinteger-array
a árvore de busca binária em ordem por nível, com -1 para um espaço vazio
pinteger
o primeiro valor a encontrar
qinteger
o segundo valor a encontrar
Retornainteger
o valor do nó mais profundo que tem tanto p quanto q em sua subárvore

Restrições

  • 1 ≤ tree.length ≤ 32767
  • Cada tree[i] é -1 ou um valor com 0 ≤ tree[i] ≤ 105.
  • tree[0] nunca é -1, então a árvore tem pelo menos um nó.
  • O array pode terminar com entradas -1 extras após o último nó.
  • Ambos os filhos de uma posição vazia também estão vazios, e a profundidade é no máximo 14.
  • A árvore é uma árvore binária de busca válida, portanto todos os seus valores são distintos.
  • p e q são valores de nós na árvore. Eles podem estar em qualquer ordem e ser iguais.

Exemplos

Entrada
tree = [20, 8, 31, 3, 12, 25, 40, -1, -1, 10, 15]p = 3q = 15
Saída
8
Explicação
Subindo a partir de 3 e de 15, o primeiro nó que ambos alcançam é 8: 3 é seu filho à esquerda e 15 está abaixo de 12, à sua direita. A raiz 20 também é um ancestral comum, mas está mais acima.
challenge icon

Para ir além

O que você mudaria se p ou q pudesse estar faltando na árvore e a função tivesse que retornar -1 nesse caso?

Redefinir código
def lowestCommonAncestor(tree, p, q):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

tree = [20, 8, 31, 3, 12, 25, 40, -1, -1, 10, 15]
p = 3
q = 15

Saída Esperada

8