Arbres et graphes
Parcours, applications
Arbres et graphes
Définitions
Un graphe est constitué d'un ensemble de sommets et d'un ensemble d'arêtes . Il est :
- orienté si les arêtes ont un sens (arcs), non orienté sinon ;
- pondéré si chaque arête porte un poids (distance, coût, capacité) ;
- connexe s'il existe un chemin entre toute paire de sommets.
Un arbre est un graphe non orienté connexe sans cycle. Pour un arbre à sommets, il y a exactement arêtes. Un arbre enraciné distingue un sommet (la racine) ; on parle alors de père, fils, frères, feuilles et nœuds internes.
Représentations en mémoire
| Représentation | Espace | Test d'arête | Parcours voisins |
|---|---|---|---|
| Matrice d'adjacence | |||
| Liste d'adjacence |
# Liste d'adjacence (graphe orienté pondéré)
graphe = {
'A': [('B', 5), ('C', 2)],
'B': [('D', 3)],
'C': [('B', 1), ('D', 6)],
'D': []
}
Parcours
Parcours en profondeur (DFS) — utilise une pile (récursive ou explicite) :
def dfs(g, s, vus=None):
if vus is None: vus = set()
vus.add(s)
for v, _ in g[s]:
if v not in vus:
dfs(g, v, vus)
return vus
Parcours en largeur (BFS) — utilise une file ; donne le plus court chemin en nombre d'arêtes dans un graphe non pondéré.
from collections import deque
def bfs(g, depart):
vus, file = {depart}, deque([depart])
while file:
s = file.popleft()
for v, _ in g[s]:
if v not in vus:
vus.add(v); file.append(v)
Complexité des deux : .
Arbres binaires
Un arbre binaire : chaque nœud a au plus 2 fils. Trois parcours classiques :
- préfixe (racine, gauche, droite),
- infixe (gauche, racine, droite) — donne une suite triée pour un ABR,
- suffixe (gauche, droite, racine).
Un arbre binaire de recherche (ABR) vérifie : pour tout nœud , les clés du sous-arbre gauche sont et celles du sous-arbre droit sont . Recherche, insertion, suppression : où est la hauteur ( si équilibré, dans le pire cas).
Sources et références
Ce cours est rédigé par l'équipe RévisionBac à partir du programme officiel et des sources institutionnelles ci-dessous. Elles permettent de vérifier les définitions, les chiffres et les normes citées.
- 1.Programmes et ressources du lycée général et technologique — Éduscol — Ministère de l'Éducation nationale
- 2.Bulletin officiel de l'Éducation nationale (programmes du baccalauréat) — education.gouv.fr
- 3.Ressources et programme de NSI — Éduscol
- 4.Documentation du langage Python — Python Software Foundation
- 5.Protection des données et RGPD — CNIL
- 6.Textes de loi et jurisprudence — Légifrance
Contenu vérifié et mis à jour le 08/08/2026. Les liens renvoient vers les sites officiels des éditeurs cités.
Historique éditorial
Ce chapitre est rédigé et relu par l'équipe RévisionBac, puis enrichi par les contributions validées.
- — Dernière mise à jour du cours (relecture et enrichissement)
- — Première publication de la fiche de cours