Les noeuds qui ne sont pas des feuilles sont aussi qualifiés de noeuds internes.
Exemple d'arbre ayant 7 noeuds, 4 feuilles, 6 branches et pour racine : le noeud A.
Les expressions arithmétiques sont représentables sous forme d'arbre binaire. En effet les opérateurs d'addition, de soustraction, de multiplication ou de division sont d'arité 2, c'est-à-dire qu'ils s'appliquent à deux opérandes. Les arbres binaires, par définition d'arité 2, sont donc tout désignés pour les repésenter.
Pour l'Arbre 03, rappelé ci-dessous, on peut aussi imaginer cette structure :
L = [A, B, [C, G, H]]
Ici chaque arbre et sous-arbre est représenté par une liste contenant trois éléments : la racine, le SAG et le SAD.
Reprenons toujours l'exemple de l'Arbre 03. Sa représentation sous forme de dictionnaire peut être :
D =
Ici, chaque arbre et sous-arbre est un dictionnaire avec trois
clés : la racine, le SAG et le SAD.
_
en préfixe de leur nom. Ils sont directement modifiables par l'utilisateur. Le parcours en largeur d'un arbre binaire consiste à parcourir l'arbre,
niveau par niveau en partant de la racine en en lisant les noeuds de
gauche à droite.
Le parcours en largeur de l'arbre ci-dessus donne : A-B-C-D-E-F-G-H-I
Pseudo code : L'algorithme de parcours en largeur utilise une file.
TAD_Arbre.py
en ajoutant dans les premières lignes l'instruction : Lors du parcours en profondeur d'un arbre, nous passons sur chaque noeud à trois reprises, avant son fils gauche, entre ses deux fils et après son fils droit.
Lorsqu'on traite un noeud dès sa première visite (ronds rouges en cliquant sur l'image),
nous obtenons l'ordre du parcours en profondeur préfixe des noeuds.
Algorithmiquement, cela revient à faire :
[racine] + appel récursif sur SAG + appel récursif sur SAD
Le parcours en profondeur préfixe de l'arbre binaire 06 ci-dessus
donne : A-B-D-E-G-H-C-F-I
Lorsqu'on traite un noeud lors de sa deuxième visite (carrés bleus),
nous obtenons l'ordre du parcours en profondeur infixe des noeud.
Algorithmiquement, cela revient à faire :
appel récursif sur SAG + [racine] + appel récursif sur SAD
Le parcours en profondeur préfixe de l'arbre binaire 06 ci-dessus
donne : D-B-G-E-H-A-C-I-F
Lorsqu'on traite un noeud lors de sa troisième visite (triangles
verts), nous obtenons l'ordre du parcours en profondeur postfixe des noeud.
Algorithmiquement, cela revient à faire :
appel récursif sur SAG + appel récursif sur SAD + [racine]
Le parcours en profondeur postfixe de l'arbre binaire 06 ci-dessus
donne : D-G-H-E-B-I-F-C-A
Pseudo code : Algorithme pour déterminer la taille d'un arbre.
La hauteur (ou la profondeur) d'un noeud est le nombre de branches entre ce noeud et la racine de l'arbre. La hauteur d'un noeud est définit par :
Attention : La convention utilisée ici est : Le niveau de la racine vaut 1 tandis que sa hauteur (ou sa profondeur) valent 0.
Exemple : Dans cet arbre, le noeud "H" est de hauteur 3.
Pour l'instant nos arbres ne sont pas triés (il ne s'agit pas encore d'arbre binaire de recherche). Ainsi, pour savoir où se situe un noeud et en déduire sa hauteur (ou sa profondeur), il faut parcourir tout l'arbre à sa recherche. L'idée ici va être de descendre dans l'arbre, de manière récursive, en partant de la racine (hauteur 0, niveau 1). Pour chaque noeud rencontré, on va enregistrer dans un dictionnaire sa valeur et son niveau.
Pseudo code :