Metadata-Version: 2.1
Name: ColabTurtleArbreBinaire
Version: 0.0.2
Summary: A module using ColabTurtlePlus to draw binary trees
Author-email: Matthieu Bensussan <matthieu.bensussan@gmail.com>
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: ColabTurtlePlus

# ColabTurtleArbreBinaire

Ce module permet de représenter un arbre binaire et de visualiser son
parcours à l'aide du module
[ColabTurtlePlus](https://pypi.org/project/ColabTurtlePlus/) (un module dérivé
de Turtle pour les notebooks Google Colab et Jupyter).

Dans ce module, un arbre binaire est représenté en Python à l'aide d'une liste
de la façon suivante :

- `[]` représente l'arbre vide.
- `[v, sag, sad]` représente un arbre non vide avec :
    - `v` la valeur de sa racine ;
    - `sag` son sous-arbre de gauche ;
    - `sad` son sous-arbre de droite.

Ce module est destiné à l'enseignement de l'informatique.

## Installation

Il faut préalablement installer le module en exécutant la commande shell
suivante dans une cellule :

```python
!pip install ColabTurtleArbreBinaire
```

## Utilisation

Pour importer le module, exécuter le code suivant dans une autre cellule :

```
from ColabTurtleArbreBinaire import *
```

## Exemples

Exécutez la cellule suivante pour stocker en mémoire l'arbre binaire `abr0` qui
sera utilisé dans les exemples qui suivent.

```python
abr0 = [
    30,
        [9,
            [7,
                [5, [], []],
                [6, [], []]
            ],
            [13,
                [10, [], []],
                []
            ]
        ],
        [42,
            [31, [], []],
            [54, [], []]
        ]
]
```

Les abres ayant pour valeur des chaînes de caracactères sont aussi pris en
charge :

```python
abr1 = [
    'G',
        ['D',
            ['C',
                ['A', [], []],
                ['B', [], []]
            ],
            ['F',
                ['E', [], []],
                []
            ]
        ],
        ['I',
            ['H', [], []],
            ['J', [], []]
        ]
]
```

```python
abr2 = [
    'Albatros',
        ['Baleine',
            ['Cachalot',
                ['Dauphin', [], []],
                ['Éléphant', [], []]
            ],
            ['Faucon',
                ['Gazelle', [], []],
                []
            ]
        ],
        ['Héron',
            ['Iguane', [], []],
            ['Jaguar', [], []]
        ]
]
```

### Affichage d'un arbre

```python
dessiner(abr0) # avec les arbres vides
```
```python
dessiner(abr0, dessiner_vide=False) # sans les arbres vides
```
### Animation du parcours d'un arbre

```python
dessiner_parcours(abr0, dessiner_vide=False, parcours='largeur')
```

*Remarque.* `'largeur'` peut être remplacé par `'infixe'`, `'préfixe'`,
`'suffixe'` ou `'postfixe'`.

### Animation de la recherche d'une valeur dans un arbre

```python
dessiner_recherche(abr0, 13, dessiner_vide=False, parcours='largeur')
```

*Remarque.* `'largeur'` peut être remplacé par `'infixe'`, `'préfixe'`,
`'suffixe'` ou `'postfixe'`.

### Animation de l'insertion d'une valeur dans un arbre binaire de recherche

```python
dessiner_insertion(abr0, 34)
```
