Outils pour utilisateurs

Outils du site


glossaires:python:arbre

Ceci est une ancienne révision du document !


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

max(a, b, ...) et min(a, b, ...) (maximum / minimum entre plusieurs valeurs)

Les fonctions max() et min() renvoient respectivement la plus grande et la plus petite valeur parmi plusieurs valeurs données en paramètre (ou parmi les éléments d'une liste).

print(max(3, 7, 2))       #affiche 7 (la plus grande valeur)
print(min(3, 7, 2))       #affiche 2 (la plus petite valeur)
 
ma_liste = [4, 9, 1, 6]
print(max(ma_liste))      #affiche 9
print(min(ma_liste))      #affiche 1

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
glossaires/python/arbre.1785617607.txt.gz · Dernière modification : de loutrel