Menu
CoddyTech

Validate Binary Search Tree

Uma árvore binária é armazenada no array tree na ordem de heap: a raiz está no índice 0, os filhos do índice i estão em 2*i+1 (esquerda) e 2*i+2 (direita), -1 marca uma posição vazia, e o array pode terminar com entradas -1 extras.

Escreva isValidBST, que retorna true se a árvore for uma árvore de busca binária e false caso contrário. Em uma árvore de busca binária, o valor de cada nó é estritamente maior que todos os valores de sua subárvore esquerda e estritamente menor que todos os valores de sua subárvore direita.

Função

isValidBST(tree: integer-array) → boolean
treeinteger-array
árvore binária em ordem por nível, com -1 para uma posição vazia
Retornaboolean
true se a árvore for uma árvore de busca binária, false caso contrário

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ó.
  • A matriz 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 é de no máximo 14.
  • Os valores podem se repetir.

Exemplos

Entrada
tree = [8, 3, 12, 1, 6, 10, 15]
Saída
true
Explicação
Lidos em ordem (subárvore esquerda, nó, subárvore direita), os valores são 1, 3, 6, 8, 10, 12, 15. Eles aumentam estritamente, então cada nó fica no lado correto de cada ancestral.
challenge icon

Para ir além

O pai de um nó está no índice (i-1)/2, arredondado para baixo. Você consegue percorrer a árvore em ordem usando espaço extra O(1), passando pelos pais em vez de usar uma pilha ou recursão?

Redefinir código
def isValidBST(tree):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

tree = [8, 3, 12, 1, 6, 10, 15]

Saída Esperada

true