Menu
CoddyTech

Diameter of Binary Tree

Você recebe uma árvore binária armazenada no array tree em ordem por níveis. A raiz fica no índice 0, os filhos do nó no índice i ficam em 2*i+1 (esquerdo) e 2*i+2 (direito), -1 indica uma posição vazia, e o array pode terminar com entradas -1 extras. Retorne o diâmetro da árvore: o número de arestas no caminho mais longo entre quaisquer dois nós. O caminho pode passar pela raiz ou permanecer dentro de uma subárvore.

Função

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
a árvore binária em ordem por nível, com -1 para uma posição vazia
Retornainteger
o número de arestas no caminho mais longo entre dois nós

Restrições

  • 1 ≤ tree.length ≤ 32767
  • Cada tree[i] é -1 ou um valor com 0 ≤ tree[i] ≤ 1000.
  • tree[0] nunca é -1, então 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.

Exemplos

Entrada
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
Saída
4
Explicação
O caminho 7, 4, 3, 8, 6 (índices 9, 4, 1, 0, 2) contém cinco nós conectados por quatro arestas. Ele faz uma curva na raiz: três arestas descendo pelo lado esquerdo e uma pelo direito.

lock icon+12 testes ocultos ao enviar

challenge icon

Para ir além

Como você retornaria o próprio caminho, com os valores dos nós de uma extremidade do diâmetro à outra?

Redefinir código
def diameterOfBinaryTree(tree):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]

Esperado

4