Para cada nó em uma árvore binária balanceada, a diferença máxima nas alturas da subárvore filho esquerda e da subárvore filho direita são no máximo 1.
A altura de uma árvore binária é a distância do nó raiz ao filho do nó que está mais distante da raiz.
Abaixo está um exemplo:
2 <-- root: Height 1
/ \
7 5 <-- Height 2
/ \ \
2 6 9 <-- Height 3
/ \ /
5 11 4 <-- Height 4
Altura da árvore binária: 4
A seguir, são apresentadas árvores binárias e um relatório sobre se elas estão ou não equilibradas:
A árvore acima está desequilibrada .
A árvore acima está equilibrada .
Escreva o programa mais curto possível que aceite como entrada a raiz de uma árvore binária e retorne um valor de falsey se a árvore estiver desequilibrada e um valor de verdade se a árvore estiver equilibrada.
Entrada
A raiz de uma árvore binária. Isso pode estar na forma de uma referência ao objeto raiz ou mesmo de uma lista que é uma representação válida de uma árvore binária.
Resultado
Retorna o valor verdadeiro: se a árvore estiver equilibrada
Retorna o valor falsey: se a árvore não estiver equilibrada.
Definição de uma árvore binária
Uma árvore é um objeto que contém um valor e outras duas árvores ou ponteiros para eles.
A estrutura da árvore binária é semelhante à seguinte:
typedef struct T
{
struct T *l;
struct T *r;
int v;
}T;
Se estiver usando uma representação de lista para uma árvore binária, pode ser algo como o seguinte:
[root_value, left_node, right_node]
4
, a árvore restante está equilibrada?