Arbre

Arbre binaire implémenté avec un dictionnaire {clef: [fils_gauche, fils_droit]}

On peut aussi représenter un arbre binaire en utilisant un dictionnaire où chaque clé est un nœud et la valeur associée est une liste contenant son fils gauche et son fils droit (None s'il n'y a pas de fils).

arbre = {
    5: [3, 8],
    3: [None, None],
    8: [None, None]
}
 
def parcours_infixe(noeud, arbre):
    """
    Objectif :
    Affiche les étiquettes de l'arbre en parcours infixe (gauche, racine, droite).
    Entrée :
    noeud : tout type ou None : la clé du nœud de départ du parcours
    arbre : dict : le dictionnaire représentant l'arbre binaire
    Sortie :
    """
    if noeud is not None:  #on ne parcourt que si le nœud existe
        fils_gauche, fils_droit = arbre[noeud]
        parcours_infixe(fils_gauche, arbre)
        print(noeud)
        parcours_infixe(fils_droit, arbre)
 
parcours_infixe(5, arbre)  #affiche 3, 5, 8

Arbre binaire implémenté avec une classe Noeud (attributs étiquette, gauche, droit)

En terminale On peut représenter un arbre binaire en créant une classe Noeud, où chaque nœud possède une étiquette (sa valeur) et deux fils : gauche et droit (qui valent None s'il n'y a pas de fils).

class Noeud:
    def __init__(self, etiquette, gauche=None, droit=None):
        """
        Objectif :
        Crée un nœud d'arbre binaire.
        Entrée :
        etiquette : tout type : la valeur portée par le nœud
        gauche    : Noeud ou None : le fils gauche du nœud
        droit     : Noeud ou None : le fils droit du nœud
        Sortie :
        """
        self.etiquette = etiquette
        self.gauche = gauche
        self.droit = droit
 
#construction d'un petit arbre binaire
arbre = Noeud(5, Noeud(3), Noeud(8))
 
def parcours_infixe(noeud):
    """
    Objectif :
    Affiche les étiquettes de l'arbre en parcours infixe (gauche, racine, droite).
    Entrée :
    noeud : Noeud ou None : le nœud de départ du parcours
    Sortie :
    """
    if noeud is not None:  #on ne parcourt que si le nœud existe
        parcours_infixe(noeud.gauche)
        print(noeud.etiquette)
        parcours_infixe(noeud.droit)
 
parcours_infixe(arbre)  #affiche 3, 5, 8