ajout de tous les cours et TP préparés cet été
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
### Définition:
|
||||
Un arbre **binaire** est un arbre de degré 2 (dont lesnoeuds sont de degré 2 au plus).
|
||||
Un arbre **binaire** est un arbre de degré 2 (dont les noeuds sont de degré 2 au plus).
|
||||
|
||||
Les enfants d'un noeud sont lus de **gauche à droite** et sont appelés **fils gauche** et **fils droit**.
|
||||
|
||||
@@ -72,30 +72,16 @@ Il possède 3 niveaux, sa hauteur ou profondeur est donc de 2. La taille du tabl
|
||||
|
||||
4. Voici un tableau représentant un arbre binaire:
|
||||
|
||||
```python
|
||||
['*','-',5,2,6,None,None,None,None,None,None,None,None,None,None]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
Le dessiner. Que peut-il représenter ?
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
> Voici un code python Python qui crée la liste représentant l'arbre de l'exercice 2
|
||||
|
||||
@@ -152,53 +138,13 @@ print(arbre)
|
||||
|
||||
**<u>Inversement, pour trouver le parent d'un noeud, il faut vérifier : i - 1 //2</u>**
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
---------
|
||||
|
||||
## Une seconde façon de faire...
|
||||
|
||||
Comme vous l'avez sans doute constaté, il est assez fastidieux de représenter un arbre avec un unique tableau surtout pour un arbre très profond.
|
||||
|
||||
L'idée est de représenter l'arbre ave cun tableau contenant des tableaux
|
||||
L'idée est de représenter l'arbre avec un tableau contenant des tableaux
|
||||
|
||||

|
||||
|
||||
@@ -251,52 +197,14 @@ print(arbre1)
|
||||
### Exercice :
|
||||
Ecrire toutes les fonctions de l'exercice 3 dans le cas de cette implémentation de l'arbre.
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
--------
|
||||
|
||||
Nous allons maintenant nous intéresser à la hauteur de l'arbre, ainsi qu'aux différentes façons de le parcourir:
|
||||
* Le parcours en largeur
|
||||
* Le parcours en profondeur (parcours fixe, parcours infixe et parcours suffixe).
|
||||
* Le parcours en profondeur (parcours préfixe, parcours infixe et parcours suffixe).
|
||||
|
||||
**Calcul de la hauteur de l'arbre:**
|
||||
L'idée ets la suivante:
|
||||
L'idée est la suivante:
|
||||
* Si l'arbre est vide, la hauteur vaut -1
|
||||
* Sinon la hauteur vaut 1 auquel il faut ajouter le maximum entre les hauteurs des sous arbres gauche et droit.
|
||||
* Ces sous-arbres sont eux même des arbres dont il faut calculer la hauteur.
|
||||
@@ -318,7 +226,7 @@ Voici l'algorithme:
|
||||
## Les parcours
|
||||
|
||||
**Le parcours en largeur:**
|
||||
Le parcours en largeur d'un arbre consiste à partir de la racine. On visite ensuite son fils gauche puis sont fils droit, puis le fils gauche du fils gauche etc... Comme le montre le schéma ci-dessous:
|
||||
Le parcours en largeur d'un arbre consiste à partir de la racine. On visite ensuite son fils gauche puis son fils droit, puis le fils gauche du fils gauche etc... Comme le montre le schéma ci-dessous:
|
||||
|
||||

|
||||
|
||||
@@ -344,14 +252,6 @@ Voici l'algorithme:
|
||||
2. Implémenter alors cette fonction et l'essayer sur l'arbre précédent.
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
**Les parcours en profondeur**
|
||||
On se balade autour de l'arbre en suivant les pointillés
|
||||
@@ -374,8 +274,8 @@ Dans le schéma ci-dessus, on a rajouté des "noeuds fantômes" pour montrer que
|
||||
* une fois par en dessous
|
||||
* une fois par la droite
|
||||
|
||||
### Definition:
|
||||
Dans un parcours **prefixe**, on liste le noeud la première fois qu'on le rencontre.
|
||||
### Définition:
|
||||
Dans un parcours **préfixe**, on liste le noeud la première fois qu'on le rencontre.
|
||||
|
||||
|
||||
### Exercice
|
||||
@@ -429,9 +329,6 @@ Nous allons créer une classe **Noeud** dont les attributs d'instances seront:
|
||||
7. Transformer alors vos fonctions en méthodes de la classe Noeud
|
||||
|
||||
|
||||
```python
|
||||
|
||||
```
|
||||
|
||||
-------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user