Définition d'un arbre équilibré


102

Je me demande simplement si quelqu'un pourrait clarifier la définition d'un arbre équilibré pour moi. J'ai que "un arbre est équilibré si chaque sous-arbre est équilibré et la hauteur des deux sous-arbres diffère d'au plus un.

Je m'excuse si c'est une question stupide, mais cette définition s'applique-t-elle à chaque nœud jusqu'aux feuilles d'un arbre ou uniquement aux sous-arbres gauche et droit immédiatement à la racine? Je suppose qu'une autre façon d'encadrer cela serait, est-il possible que les nœuds internes d'un arbre soient déséquilibrés et que l'arbre entier reste équilibré?


6
Je voulais juste ajouter que nous parlons de Comp. Définition scientifique d'un sous-arbre: Un sous-arbre d'un arbre T est un arbre composé d'un nœud dans T et de tous ses descendants dans T.Pour une définition mathématique régulière (un sous-graphe d'un arbre qui est lui-même un arbre) ce n'est pas vrai .
TT_

Réponses:


123

La contrainte est généralement appliquée de manière récursive à chaque sous-arbre. Autrement dit, l'arbre n'est équilibré que si:

  1. Les hauteurs des sous-arbres gauche et droit diffèrent d'au plus un, ET
  2. Le sous-arbre de gauche est équilibré, ET
  3. Le bon sous-arbre est équilibré

Selon cela, l'arbre suivant est équilibré:

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

Le suivant n'est pas équilibré car les sous-arbres de C diffèrent de 2 par leur hauteur:

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

Cela dit, la contrainte spécifique du premier point dépend du type d'arbre. Celui répertorié ci-dessus est le type d' arbres AVL .

Les arbres rouge-noir , par exemple, imposent une contrainte plus douce.


52

Il existe plusieurs façons de définir «équilibré». L'objectif principal est de conserver les profondeurs de tous les nœuds O(log(n)).

Il me semble que la condition d'équilibre dont vous parliez concerne l' arbre AVL .
Voici la définition formelle de la condition d'équilibre de l'arbre AVL :

Pour tout nœud dans AVL, la hauteur de son sous-arbre gauche diffère d' au plus 1 de la hauteur de son sous-arbre droit.

Question suivante, qu'est-ce que la « hauteur »?

La " hauteur " d'un nœud dans un arbre binaire est la longueur du chemin le plus long de ce nœud à une feuille.

Il y a un cas étrange mais courant:

Les gens définissent la hauteur d'un arbre vide (-1).

Par exemple, l'enfant gauche de root est null:

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

Deux autres exemples à déterminer:

Oui, un exemple d' arbre équilibré :

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

Non, pas un exemple d' arbre équilibré :

        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)      

1
Notez que cette définition autorise les sous-arborescences déséquilibrées d'arbres équilibrés. (par exemple, étendre l'exemple d'arbre équilibré ci-dessus en ajoutant un enfant à D et un autre à G) Est-ce prévu?
gen

2
Non, ce n'est pas le cas. " Pour tout nœud dans AVL , la hauteur de son sous-arbre gauche diffère d'au plus 1 par rapport à la hauteur de son sous-arbre droit." Si vous ajoutez un enfant à D, alors B ne suivra pas la règle ci-dessus. Par conséquent, l'arbre ne sera pas un BBT.
John Red

1
votre réponse est très verbeuse et
imprécise

9

Il n'y a aucune différence entre ces deux choses. Pensez-y.

Prenons une définition plus simple: «Un nombre positif est égal s'il est égal à zéro ou ce nombre moins deux est pair». Est-ce que cela dit que 8 est égal si 6 est pair? Ou est-ce que cela signifie que 8 est égal si 6, 4, 2 et 0 sont pairs?

Il n'y a aucune différence. S'il dit que 8 est même si 6 est pair, il dit également que 6 est même si 4 est pair. Et ainsi, il dit aussi 4 est même si 2 est pair. Et ainsi il dit que 2 est même si 0 est pair. Donc, s'il dit que 8 est même si 6 est pair, il dit (indirectement) que 8 est même si 6, 4, 2 et 0 sont pairs.

C'est la même chose ici. Tout sous-arbre indirect peut être trouvé par une chaîne de sous-arbres directs. Donc, même si cela ne s'applique directement qu'aux sous-arbres directs, il s'applique toujours indirectement à tous les sous-arbres (et donc à tous les nœuds).


1
Disons que la valeur de la racine est 15. En bas à droite, j'ai 16,17,18. En bas à gauche, j'ai 14,13,12. Est-ce un arbre équilibré? La hauteur de chaque sous-arbre par rapport au nœud est inférieure à un. Mais prenez le premier nœud en dessous de la racine à droite, il n'a pas d'enfant à gauche mais la hauteur de ses enfants à droite est de 2. Donc, ce nœud n'est pas équilibré. Est-ce exact?
Mark Soric

1
Correct. Ainsi, l'arbre n'est pas équilibré.
David Schwartz

1
Donc, pour qu'un arbre soit équilibré, chaque nœud doit être équilibré. Beauté - Merci beaucoup pour votre aide.
Mark Soric

1
@DavidSchwartz pourquoi essayons-nous d'utiliser un arbre équilibré? pourquoi nous soucions-nous qu'un arbre soit équilibré ou non?
Dejell

3
C'est, de loin, la réponse la plus complexe que j'ai vue sur SO - à n'importe quelle question. Désolé de dire ça.
Trevor

4

L'arbre équilibré est un arbre dont la hauteur est de l'ordre du log (nombre d'éléments dans l'arbre).

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 définition donnée "un arbre est équilibré de chaque sous-arbre est équilibré et la hauteur des deux sous-arbres diffère d'au plus un" est suivie par les arbres AVL.

Étant donné que les arbres AVL sont équilibrés mais que tous les arbres équilibrés ne sont pas des arbres AVL, les arbres équilibrés ne contiennent pas cette définition et les nœuds internes peuvent y être déséquilibrés. Cependant, les arborescences AVL nécessitent que tous les nœuds internes soient équilibrés.


3

le but de l'arbre équilibré est d'atteindre la feuille en un minimum de traversée (hauteur min). Le degré de l'arbre est le nombre de branches moins 1. Un arbre équilibré peut ne pas être binaire.


0
  1. La hauteur d'un nœud dans un arbre est la longueur du chemin le plus long de ce nœud vers le bas jusqu'à une feuille, en comptant à la fois les sommets de début et de fin du chemin.
  2. Un nœud dans un arbre est équilibré en hauteur si les hauteurs de ses sous-arbres ne diffèrent pas de plus de 1.
  3. Un arbre est équilibré en hauteur si tous ses nœuds sont équilibrés en hauteur.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.