Definição de árvore equilibrada
peço desculpa se esta é uma pergunta estúpida, mas esta definição aplica-se a todos os nós até às folhas de uma árvore ou apenas às sub-árvores esquerda e direita imediatamente fora da raiz?Acho que outra forma de pedir isto seria perguntar se é é possível que os nós internos de uma árvore fiquem desequilibrados e que toda a árvore permaneça equilibrada?
5 answers
A restrição é geralmente aplicada recursivamente a cada sub-árvore. Ou seja, a árvore só é balanceada se:
- as alturas esquerda e direita das sub-árvores diferem no máximo por uma, e
- a sub-árvore esquerda é equilibrada, e
- a sub-árvore direita é equilibrada
De acordo com isto, a árvore seguinte é equilibrada:
A
/ \
B C
/ / \
D E F
/
G
O próximo é Não equilibrado porque as sub-árvores de C diferem em 2 na sua altura:
A
/ \
B C <-- difference = 2
/ /
D E
/
G
Dito isto, o a restrição específica do primeiro ponto depende do tipo de árvore. A listada acima é a típica para as árvores de AVL .
As árvores vermelhas-pretas , por exemplo, impõem uma restrição mais suave.
O(log(n))
.
Parece-me que a condição de equilíbrio de que falavas é para a árvore AVL.Aqui está a definição formal da condição de equilíbrio da árvore de AVL:
Próxima pergunta., o que é "Altura"?Para qualquer nó em AVL, a altura da sua sub-árvore esquerda difere por no máximo 1 da altura da sua sub-árvore direita.
Há um caso estranho, mas comum:A "Altura " de um nó numa árvore binária é o comprimento do caminho mais longo desse nó para uma folha.
Por exemplo, o filho esquerdo da root éAs pessoas definem a altura de uma árvore vazia como
(-1)
.
null
:
A (Height = 2)
/ \
(height =-1) B (Height = 1) <-- Unbalanced because 1-(-1)=2 >1
\
C (Height = 0)
Mais dois exemplos para determinar:
Sim, Uma Árvore Equilibrada Exemplo:
A (h=3)
/ \
B(h=1) C (h=2)
/ / \
D (h=0) E(h=0) F (h=1)
/
G (h=0)
Não, Não É Equilibrado. Árvore Exemplo:
A (h=3)
/ \
B(h=0) C (h=2) <-- Unbalanced: 2-0 =2 > 1
/ \
E(h=1) F (h=0)
/ \
H (h=0) G (h=0)
Árvore balanceada é uma árvore cuja altura é de ordem de tronco (número de elementos na árvore).
height = O(log(n))
O, as in asymptotic notation i.e. height should have same or lower asymptotic
growth rate than log(n)
n: number of elements in the tree
A definição dada "uma árvore é balanceada de cada sub-árvore é balanceada e a altura das duas sub-árvores difere no máximo uma" é seguida por árvores AVL.
Como as árvores AVL são balanceadas, mas nem todas as árvores balanceadas são árvores AVL, as árvores balanceadas não têm esta definição e os nós internos podem ser desequilibrados nelas. No entanto, as árvores AVL exigem que todos os nós internos sejam equilibrado.
O objectivo da árvore balanceada é atingir a folha num mínimo de traversal (altura mínima). O grau da árvore é o número de ramos menos 1. Uma árvore balanceada pode não ser binária.