[PDF] arbre binaire de recherche suppression
[PDF] exercices sur les arbres binaires en c
[PDF] exercice corrigé arbre rouge et noir
[PDF] arbre binaire de recherche en c
[PDF] les arbres en c openclassroom
[PDF] arbre binaire de recherche algorithme
[PDF] arbre binaire de recherche algorithme suppression
[PDF] parcours en profondeur arbre
[PDF] arbre binaire complet
[PDF] dénombrement cours
[PDF] arbre de probabilité pile ou face
[PDF] arbre de probabilité seconde
[PDF] arbre probabilité conditionnelle
[PDF] arbre de décision exercices corrigés
[PDF] arbre de décision data mining
Universit´e Bordeaux 2 Licence MASS/Sciences Cognitives 2006/2007, 6`eme semestre Algorithmes et structures de donn´ees : TD 1 Corrig´e Arbres binaires - Arbres binaires de recherche - Fonctions d´efinies par r´ecurrence -
noeudˆ .contenu noeudˆ .contenunoeudˆ .contenu
[PDF] exercices sur les arbres binaires en c
[PDF] exercice corrigé arbre rouge et noir
[PDF] arbre binaire de recherche en c
[PDF] les arbres en c openclassroom
[PDF] arbre binaire de recherche algorithme
[PDF] arbre binaire de recherche algorithme suppression
[PDF] parcours en profondeur arbre
[PDF] arbre binaire complet
[PDF] dénombrement cours
[PDF] arbre de probabilité pile ou face
[PDF] arbre de probabilité seconde
[PDF] arbre probabilité conditionnelle
[PDF] arbre de décision exercices corrigés
[PDF] arbre de décision data mining
Universit´e Bordeaux 2 Licence MASS/Sciences Cognitives 2006/2007, 6`eme semestre Algorithmes et structures de donn´ees : TD 1 Corrig´e Arbres binaires - Arbres binaires de recherche - Fonctions d´efinies par r´ecurrence -
Complexit´e asymptotique
Rappel :
SetLength(tableau, n)est de complexit´e O(n)
SetLength(tableau, 1)est de complexit´e O(1)
New(element)est de complexit´e O(1) quandelementest d"un type de taille fixeExercice 1.1Arbres binaires
Consid´erer l"arbre suivant :
1. D´essiner cet arbre.
2. Quelle est la hauteur de l"arbre ?
La hauteur de l"arbre est 3.
3. Est-ce que cet arbre est un arbre entier, un arbre parfait (=complet), et/ou un arbre
d´eg´en´er´e ? Cet arbre est entier car chaque noued a zero ou deux fils. Par contre, cet arbre est ni parfait ni d´eg´en´er´e.4. Afficher cet arbre binaire de la mani`ere pr´efix, puis infix,et ensuite postfix.
Premi`erement, on va afficher cet arbre sans utiliser des parentheses.Pr´efix* + 3 / 4 2 - 8 * 2 3
Infix3 + 4 / 2 * 8 - 2 * 3
Postfix3 4 2 / + 8 2 3 * - *
Deuxi`emement, on va afficher cet arbre en utilisant des parentheses. Notez que les par- enth`eses sont important uniquement pour la notationinfix. Pr´efix*( +( 3, /( 4, 2) ) , -( 8, *( 2, 3) ) )Infix( ( 3+ ( 4/2 ) ) * ( 8- ( 2*3 ) ) )
Postfix( ( 3, ( 4, 2)/)+, ( 8, ( 2, 3)*)-)*
5. Consid´erer la fonction suivante :
procedure afficher( noeud : p_t_noeud ) d´ebut si NOT(noeud^.gauche = NIL) alors afficher(noeud^.gauche) si NOT(noeud^.droite = NIL)alors afficher(noeud^.droite)Write(noeud^.contenu);
fin6. Faites tourner l"appelafficher(racine);avec laracinede votre arbre dans un tableau.
Utiliser une nouvelle colonnenoeud^ .contenupour chaque nouvelle variable locale. noeudˆ .contenu noeudˆ .contenunoeudˆ .contenunoeudˆ .contenu1er appel
2`eme appel3`eme appel4`eme appel
*+3/ noeudˆ .contenu noeudˆ .contenunoeudˆ .contenunoeudˆ .contenu5`eme appel
6`eme appel7`eme appel8`eme appel
42-8noeudˆ .contenu noeudˆ .contenunoeudˆ .contenu
9`eme appel
10`eme appel11`eme appel
*237. Que fait cette proc´edure ?
Cette proc´edure affiche l"arbre de la mani`ere postfix.3 4 2 / + , 8, 2, 3 * -
8. Ecrire une fonction d´efinie par r´ecurrence qui calcule le r´esultat du terme d´ecrit par cet
arbre binaire. (D´emarche : Quelle est la condition d"arrˆet ? Comment faut-il placer les appels
r´ecurrents ?) function calculer ( noeud : p_t_noeud ) : integer; d´ebut si (noeud^.contenu = "+") alors result := calculer(noeud^.gauche) + calculer(noeud^.droite) sinon (noeud^.contenu = "-") alors result := calculer(noeud^.gauche) - calculer(noeud^.droite) sinon (noeud^.contenu = "*") alors 2 result := calculer(noeud^.gauche) * calculer(noeud^.droite) sinon (noeud^.contenu = "/") alors result := calculer(noeud^.gauche) / calculer(noeud^.droite) sinon result := StrToInt(noeud^.contenu); fin si fin L"´evaluation du terme donne le r´esultat 10, bien evidemmment.