Je me demande simplement si quelqu'un pourrait être en mesure de clarifier la définition d'un arbre équilibré pour moi. J'ai "un arbre est équilibré si chaque sous-arbre est équilibré et que la hauteur des deux sous-arbres diffère d'au plus un.
Je m'excuse s'il s'agit d'une question idiote, mais cette définition s'applique-t-elle à tous les nœuds jusqu'aux feuilles d'un arbre ou uniquement aux sous-arbres gauche et droit immédiatement à la racine? J'imagine qu'une autre façon de cadrer cela serait, est-il possible que les nœuds internes d'un arbre soient déséquilibrés et que tout l'arbre reste équilibré?
La contrainte est généralement appliquée de manière récursive à chaque sous-arbre. C'est-à-dire que l'arbre n'est équilibré que si:
Selon cela, l'arbre suivant est équilibré:
A
/ \
B C
/ / \
D E F
/
G
Le suivant est non é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 énuméré ci-dessus est typique de arbres AVL .
arbres rouge-noir , par exemple, impose une contrainte plus douce.
Il y a plusieurs façons de définir "équilibré". L'objectif principal est de garder les profondeurs de tous les nœuds à O(log(n))
.
Il me semble que la condition d'équilibre dont vous parliez est pour arborescence AVL.
Voici la définition formelle de condition d'équilibre de l'arborescence AVL:
Pour tout nœud dans AVL, la hauteur de son sous-arbre gauche diffère de au plus 1 de la hauteur de son sous-arbre droit.
Question suivante, qu'est-ce que "height"?
La " hauteur " d'un nœud dans un arbre binaire est la longueur du plus long chemin allant de ce nœud à une feuille.
Il y a un cas étrange mais commun:
Les personnes définissent la hauteur d'un arbre vide comme étant
(-1)
.
Par exemple, l'enfant gauche de la racine 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, n arbre équilibré Exemple:
A (h=3)
/ \
B(h=1) C (h=2)
/ / \
D (h=0) E(h=0) F (h=1)
/
G (h=0)
Non, Pas un arbre équilibré Exemple:
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)
Il n'y a pas de différence entre ces deux choses. Penses-y.
Prenons une définition plus simple: "Un nombre positif est égal à zéro ou égal à deux moins". Est-ce que cela dit 8 est même si 6 est pair? Ou est-ce que cela dit 8 est même si 6, 4, 2 et 0 sont pairs?
Il n'y a pas de différence. Si on dit 8 est même si 6 est pair, il dit aussi 6 est même si 4 est pair. Et ainsi, il est également dit que 4 est même si 2 est pair. Et ainsi, il est dit 2 est même si 0 est pair. Donc, si on dit 8 est même si 6 est pair, il dit (indirectement) 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. Ainsi, même s’il s’applique directement aux sous-arbres directs, il s’applique indirectement à tous les sous-arbres (et donc à tous les nœuds).
Un arbre équilibré est un arbre dont la hauteur est d’ordre de 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ée 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 tous des arbres AVL, les arbres équilibrés ne contiennent pas cette définition et les nœuds internes peuvent être déséquilibrés. Cependant, les arborescences AVL nécessitent l’équilibrage de tous les nœuds internes.
l'objectif de l'arbre équilibré est d'atteindre la feuille dans un minimum de traversée (hauteur minimale). Le degré de l'arbre est le nombre de branches moins 1. Un arbre équilibré peut ne pas être binaire.