Definición de un árbol equilibrado

100

Solo me pregunto si alguien podría aclararme la definición de un árbol equilibrado. Tengo que "un árbol está equilibrado si cada subárbol está equilibrado y la altura de los dos subárboles difiere como máximo en uno.

Pido disculpas si esta es una pregunta tonta, pero ¿esta definición se aplica a todos los nodos hasta las hojas de un árbol o solo a los subárboles izquierdo y derecho inmediatamente fuera de la raíz? Supongo que otra forma de enmarcar esto sería, ¿es posible que los nodos internos de un árbol estén desequilibrados y que todo el árbol permanezca equilibrado?

Mark Soric
fuente
6
Solo quería agregar que estamos hablando de Comp. Definición científica de un subárbol: un subárbol de un árbol T es un árbol que consta de un nodo en T y todos sus descendientes en T.Para una definición matemática regular (un subgráfico de un árbol que en sí mismo es un árbol) no es cierto .
TT_

Respuestas:

123

La restricción se aplica generalmente de forma recursiva a cada subárbol. Es decir, el árbol solo está equilibrado si:

  1. Las alturas de los subárboles izquierdo y derecho difieren como máximo en uno, Y
  2. El subárbol izquierdo está equilibrado, Y
  3. El subárbol derecho está equilibrado

Según esto, el siguiente árbol está equilibrado:

     A
   /   \
  B     C  
 /     / \  
D     E   F  
     /  
    G  

El siguiente no está equilibrado porque los subárboles de C difieren en 2 en su altura:

     A
   /   \
  B     C   <-- difference = 2
 /     /
D     E  
     /  
    G  

Dicho esto, la restricción específica del primer punto depende del tipo de árbol. El que se menciona arriba es el típico de los árboles AVL .

Los árboles rojo-negros , por ejemplo, imponen una restricción más suave.

comocomocomocomo
fuente
50

Hay varias formas de definir "equilibrado". El objetivo principal es mantener las profundidades de todos los nodos O(log(n)).

Me parece que la condición de equilibrio de la que estaba hablando es para el árbol AVL .
Aquí está la definición formal de la condición de equilibrio del árbol AVL :

Para cualquier nodo en AVL, la altura de su subárbol izquierdo difiere como máximo en 1 de la altura de su subárbol derecho.

Siguiente pregunta, ¿qué es " altura "?

La " altura " de un nodo en un árbol binario es la longitud del camino más largo desde ese nodo hasta una hoja.

Hay un caso extraño pero común:

La gente define la altura de un árbol vacío (-1).

Por ejemplo, el hijo izquierdo de root es null:

              A  (Height = 2)
           /     \
(height =-1)       B (Height = 1) <-- Unbalanced because 1-(-1)=2 >1
                    \
                     C (Height = 0)

Dos ejemplos más para determinar:

Sí, un ejemplo de árbol equilibrado :

        A (h=3)
     /     \
 B(h=1)     C (h=2)        
/          /   \
D (h=0)  E(h=0)  F (h=1)
               /
              G (h=0)

No, no es un ejemplo de árbol equilibrado :

        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)      
CherylG
fuente
1
Tenga en cuenta que esta definición permite subárboles no equilibrados de árboles equilibrados. (por ejemplo, amplíe el ejemplo de árbol equilibrado anterior agregando un niño a D y otro a G) ¿Es esto intencionado?
gen
2
No, no lo hace. " Para cualquier nodo en AVL , la altura de su subárbol izquierdo difiere como máximo en 1 de la altura de su subárbol derecho". Si agrega un hijo a D, B no seguirá la regla anterior. Por lo tanto, el árbol no será un BBT.
John Red
1
su respuesta es muy detallada y no precisa
Marwen Trabelsi
9

No hay diferencia entre estas dos cosas. Piénsalo.

Tomemos una definición más simple: "Un número positivo es incluso si es cero o ese número menos dos es par". ¿Dice esto que 8 es incluso si 6 es par? ¿O esto dice que 8 es par si 6, 4, 2 y 0 son pares?

No hay diferencia. Si dice que 8 es par si 6 es par, también dice que 6 es par si 4 es par. Y así también dice que 4 es incluso si 2 es par. Y así dice que 2 es incluso si 0 es par. Entonces, si dice que 8 es par si 6 es par, (indirectamente) dice que 8 es par si 6, 4, 2 y 0 son pares.

Aquí es lo mismo. Cualquier subárbol indirecto se puede encontrar mediante una cadena de subárboles directos. Entonces, incluso si solo se aplica directamente a los subárboles directos, todavía se aplica indirectamente a todos los subárboles (y, por lo tanto, a todos los nodos).

David Schwartz
fuente
1
Digamos que el valor de la raíz es 15. Abajo a la derecha, tengo 16,17,18. Abajo a la izquierda tengo 14,13,12. ¿Es un árbol equilibrado? La altura de cada subárbol fuera del nodo está dentro de uno. Pero tome el primer nodo debajo de la raíz a la derecha, no tiene hijos izquierdos pero la altura de sus hijos derechos es 2. De modo que ese nodo no está equilibrado. ¿Es eso correcto?
Mark Soric
1
Correcto. Por tanto, el árbol no está equilibrado.
David Schwartz
1
Entonces, para que un árbol esté equilibrado, cada nodo debe estar equilibrado. Belleza - Muchas gracias por tu ayuda.
Mark Soric
1
@DavidSchwartz ¿por qué intentamos utilizar un árbol equilibrado? ¿Por qué nos importa si un árbol está equilibrado o no?
Dejell
3
Esta es, de lejos, la respuesta más compleja que he visto en SO - a cualquier pregunta. Lamento decir esto.
Trevor
4

El árbol equilibrado es un árbol cuya altura es del orden de registro (número de elementos en el árbol).

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

La definición dada "un árbol está equilibrado o cada subárbol está equilibrado y la altura de los dos subárboles difiere como máximo en uno" es seguida por árboles AVL.

Dado que los árboles AVL están equilibrados, pero no todos los árboles equilibrados son árboles AVL, los árboles equilibrados no tienen esta definición y los nodos internos pueden estar desequilibrados en ellos. Sin embargo, los árboles AVL requieren que todos los nodos internos estén equilibrados.

div
fuente
3

el objetivo del árbol equilibrado es alcanzar la hoja en un mínimo de recorrido (altura mínima). El grado del árbol es el número de ramas menos 1. Un árbol equilibrado puede no ser binario.

Mohamed ROMDANE
fuente
0
  1. La altura de un nodo en un árbol es la longitud de la ruta más larga desde ese nodo hacia abajo hasta una hoja, contando los vértices inicial y final de la ruta.
  2. Un nodo en un árbol está equilibrado en altura si las alturas de sus subárboles no difieren en más de 1.
  3. Un árbol está equilibrado en altura si todos sus nodos están equilibrados en altura.
Juan Pablo
fuente