Menu
CoddyTech

Balanced Binary Tree

O array root contém uma árvore binária. 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 entradas extras -1 podem aparecer no final.

Retorne true se a árvore for balanceada em altura, ou seja, se em cada nó as alturas das subárvores esquerda e direita diferirem em no máximo 1, e false caso contrário. A altura de uma subárvore é o número de nós em seu caminho descendente mais longo; uma subárvore vazia tem altura 0.

Função

isBalanced(root: integer-array) → boolean
rootinteger-array
a árvore binária em ordem por nível, com -1 para uma posição vazia
Retornaboolean
verdadeiro se as alturas das duas subárvores de cada nó diferirem em no máximo 1; falso caso contrário

Restrições

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] é -1 ou um valor com 0 ≤ root[i] ≤ 105.
  • root[0] nunca é -1, portanto a árvore tem pelo menos um nó.
  • O array pode terminar com entradas extras -1 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.
  • Os valores dos nós são distintos.

Exemplos

Entrada
root = [5, 2, 9, -1, -1, 7, 11]
Saída
true
Explicação
A subárvore esquerda da raiz é o único nó 2, com altura 1. Sua subárvore direita, 9, 7, 11, tem altura 2. Elas diferem em 1, e todos os outros nós têm duas subárvores de mesma altura.
challenge icon

Para ir além

Você consegue verificar a árvore sem recursão, usando uma pilha explícita?

Redefinir código
def isBalanced(root):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

root = [5, 2, 9, -1, -1, 7, 11]

Saída Esperada

true