programme parcourslargeurarbre; type pointeur :^ARB; type ARB: enreg valeur:entier; gauche: pointeur droit: pointeur finenreg; type fifoptr: ^FIFO type FIFO: enreg arbre: pointeur; prochain: fifoptr finenreg; procedure ajouterafifo(val ARB: pointeur; ref tet,que: fifoptr) var temp:fifoptr; debut allouer(temp); temp^.prochain:=NUL; temp^.arbre:=ARB; si tet=NUL alors tet=temp sinon que^.prochain:=temp finsi que:=temp; finprocedure; fonction enlevedefifo(ref tet,que: fifoptr):pointeur; var enleve: pointeur; var temp: fifoptr; debut /* fifo non vide */ temp:=tet enleve:=tet^.arbre tet:=tet^.prochain si tet=NUL alors que=NUL finsi desallouer(temp) retourne enleve finfonction procedure parcourir(val ARB: pointeur) var tete,queue:fifoptr; var noeud: pointeur; debut tete:=NUL; queue:=NUL; ajouterafifo(ARB,tete,queue) tantque tete!=NUL noeud:=enlevedefifo(tete,queue) printf("%i\n", noeud^.valeur) si noeud^.gauche!=NUL ajouterafifo(noeud^.gauche,tete,queue) finsi si noeud^.droit!=NUL ajouterafifo(noeud^.droit,tete,queue) finsi finprocedure procédure inserer(val i:entier; ref ptr:pointeur) debut si ptr=NUL allouer(ptr); ptr^.gauche=NUL; ptr^.droit=NUL; ptr^.valeur=i; sinon si i