Menu
CoddyTech

Kth Smallest Element in a BST

Você recebe uma árvore binária de busca como o array root 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), e -1 indica uma posição vazia. O array pode terminar com entradas extras -1. Em cada nó, a subárvore à esquerda contém apenas valores menores, e a subárvore à direita, apenas valores maiores.

Retorne o k-ésimo menor valor da árvore, contando a partir de 1.

Função

kthSmallest(root: integer-array, k: integer) → integer
rootinteger-array
a árvore de busca binária em ordem por nível, com -1 para um espaço vazio
kinteger
a posição a ser encontrada em ordem crescente, começando em 1
Retornainteger
o k-ésimo menor valor na árvore

Restrições

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] é -1 ou um valor com 0 ≤ root[i] ≤ 105.
  • root[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 um espaço vazio também estão vazios, e a profundidade é no máximo 14.
  • A regra de ordenação vale em todos os nós, portanto nenhum valor aparece duas vezes.
  • 1 ≤ k ≤ o número de nós na árvore.

Exemplos

Entrada
root = [41, 17, 65, 6, 29, -1, 90, -1, -1, 22]k = 4
Saída
29
Explicação
Em ordem crescente, os valores são 6, 17, 22, 29, 41, 65, 90, e o quarto é 29. Ele é o maior dos quatro valores na subárvore à esquerda da raiz.
challenge icon

Para ir além

Se a árvore muda com frequência e você precisa encontrar muitas vezes o k-ésimo menor valor, o que cada nó poderia armazenar para que cada consulta leve O(h)?

Redefinir código
def kthSmallest(root, k):
    # Escreva o código aqui

Teste #1

Teste #2

Argumentos

root = [41, 17, 65, 6, 29, -1, 90, -1, -1, 22]
k = 4

Saída Esperada

29