edit et corrections d'erreurs factuelles, de calculs et de mise en page
This commit is contained in:
@@ -14,10 +14,9 @@ Les enfants d'un noeud sont lus de **gauche à droite** et sont appelés **fils
|
||||
|
||||

|
||||
|
||||
### Exercice 1:
|
||||
### Exercice 1 :
|
||||
Parmi les arbres du cours précédent, lesquels sont binaires ?
|
||||
|
||||
Réponse
|
||||
|
||||
### Remarque:
|
||||
Les arbres binaires forment une structure de données qui peut se définir de façon récursive.
|
||||
@@ -61,7 +60,7 @@ Il possède 3 niveaux, sa hauteur ou profondeur est donc de 2. La taille du tabl
|
||||
|
||||
*Il faut compter le nombre de noeuds, y compris les noeuds "fantômes" des feuilles.*
|
||||
|
||||
### Exercice :
|
||||
### Exercice 2 :
|
||||
1. Quelle est la taille du tableau qui permet de représenter cet arbre ?
|
||||
|
||||

|
||||
@@ -83,7 +82,7 @@ Le dessiner. Que peut-il représenter ?
|
||||
|
||||
|
||||
|
||||
> Voici un code python Python qui crée la liste représentant l'arbre de l'exercice 2
|
||||
> Voici un code Python qui crée la liste représentant l'arbre de l'exercice 2
|
||||
|
||||
|
||||
|
||||
@@ -124,7 +123,7 @@ print(arbre)
|
||||
['r', 'a', 'b', 'c', 'd', 'e', 'f', None, 'h', 'i', 'j', 'k', None, None, None, None, None, None, None, None, None, 'm', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
|
||||
|
||||
|
||||
### Exercice 3:
|
||||
### Exercice 3 :
|
||||
1. Ecrire une fonction qui retourne le parent d'un noeud s'il est dans l'arbre et None sinon.
|
||||
2. Ecrire une fonction qui retourne **True** si l'arbre est vide
|
||||
3. Ecrire une fonction qui retourne les enfants d'un noeud.
|
||||
@@ -132,11 +131,13 @@ print(arbre)
|
||||
5. Même question pour le fils droit
|
||||
6. Ecrire une fonction qui renvoie **True** si le noeud est la racine de l'arbre
|
||||
7. Ecrire une fonction qui renvoie **True** si le noeud est une feuille
|
||||
8. Ecrire une fonction qui renvoie **true** si le noeud comporte un frère gauche ou droit.
|
||||
8. Ecrire une fonction qui renvoie **True** si le noeud comporte un frère gauche ou droit.
|
||||
|
||||
**<u>Rappel : dans un tableau, si on note i l'indice d'un noeud, alors ses fils auront comme indice 2i +1 et 2i +2.</u>**
|
||||
|
||||
**<u>Inversement, pour trouver le parent d'un noeud, il faut vérifier : i - 1 //2</u>**
|
||||
**<u>Inversement, pour trouver le parent d'un noeud, il faut calculer : (i - 1) // 2</u>**
|
||||
|
||||
*Attention aux parenthèses : en Python, `i - 1 // 2` vaut `i` (la division est prioritaire sur la soustraction) !*
|
||||
|
||||
---------
|
||||
|
||||
@@ -152,7 +153,7 @@ Cet arbre se représente par le tableau:
|
||||
|
||||
['r', ['a', [ ], [ ]], ['b', [ ], [ ]]]
|
||||
|
||||
### Exercice :
|
||||
### Exercice 4 :
|
||||
Ecrire le tableau représentant l'arbre ci-dessous et le stocker dans une variable **t**
|
||||
|
||||

|
||||
@@ -194,7 +195,7 @@ print(arbre1)
|
||||
['r', ['a', ['c', [], ['h', [], []]], ['d', ['i', [], []], ['j', ['m', [], []], []]]], ['b', ['e', ['k', [], []], []], ['f', [], []]]]
|
||||
|
||||
|
||||
### Exercice :
|
||||
### Exercice 5 :
|
||||
Ecrire toutes les fonctions de l'exercice 3 dans le cas de cette implémentation de l'arbre.
|
||||
|
||||
--------
|
||||
@@ -215,7 +216,7 @@ Voici l'algorithme:
|
||||
|
||||

|
||||
|
||||
### Exercice :
|
||||
### Exercice 6 :
|
||||
1. Ecrire cette fonction pour l'arbre précédent et vérifier que sa profondeur est de 4.
|
||||
|
||||
|
||||
@@ -246,7 +247,7 @@ Voici l'algorithme:
|
||||
|
||||

|
||||
|
||||
### Exercice 7
|
||||
### Exercice 7 :
|
||||
|
||||
1. Rappeler les fonction permettant de définir une structure de file en python.
|
||||
2. Implémenter alors cette fonction et l'essayer sur l'arbre précédent.
|
||||
@@ -261,7 +262,7 @@ On se balade autour de l'arbre en suivant les pointillés
|
||||
Voici un algorithme permettant de réaliser ce parcours:
|
||||

|
||||
|
||||
### Exercice
|
||||
### Exercice 8 :
|
||||
1. Proposer une fonction permettant de réaliser le parcours en profondeur d'un arbre
|
||||
|
||||
|
||||
@@ -278,7 +279,7 @@ Dans le schéma ci-dessus, on a rajouté des "noeuds fantômes" pour montrer que
|
||||
Dans un parcours **préfixe**, on liste le noeud la première fois qu'on le rencontre.
|
||||
|
||||
|
||||
### Exercice
|
||||
### Exercice 9 :
|
||||
1. Ecrire les sommets dans l'ordre d'un parcours préfixe
|
||||
|
||||
|
||||
@@ -290,7 +291,7 @@ Ce qui correspond à:
|
||||
* On liste chaque noeud ayant un fils gauche la seconde fois qu'on le voit
|
||||
* on liste chaque noeud sans fils gauche la première fois qu'on le voit
|
||||
|
||||
### Exercice
|
||||
### Exercice 10 :
|
||||
1. Ecrire les sommets dans l'ordre d'un parcours infixe
|
||||
|
||||
|
||||
@@ -298,12 +299,12 @@ Ce qui correspond à:
|
||||
### Definition:
|
||||
Dans un parcours **suffixe**, on note le noeud la dernière fois qu'on le rencontre.
|
||||
|
||||
Exercice 11
|
||||
### Exercice 11 :
|
||||
1. Ecrire les sommets dans l'ordre d'un parcours suffixe
|
||||
|
||||
|
||||
|
||||
### Exercice
|
||||
### Exercice 12 :
|
||||
1. Voici trois algorithmes récursifs, dire pour chacun d'entre eux à quel parcours il correspond.
|
||||

|
||||

|
||||
@@ -319,7 +320,7 @@ Nous allons créer une classe **Noeud** dont les attributs d'instances seront:
|
||||
* son fils gauche (None par défaut) ou de type Noeud
|
||||
* son fils droit (None par défaut) ou de type Noeud
|
||||
|
||||
### Exercice
|
||||
### Exercice 13 :
|
||||
1. Implémentez cette classe Noeud
|
||||
2. Stocker l'arbre comme étant l'objet de type "Noeud" correspondant à la racine.
|
||||
3. Ecrire une méthode estFeuille qui renvoie True si le noeud est une feuille et False sinon
|
||||
|
||||
Reference in New Issue
Block a user