DysplayTreepython 0.1.0
A free librairie to display python binary tree.
License: MIT
Requires Python: >=3.9

# 🌳 DisplayTreePython

**DisplayTreePython** est une librairie Python permettant d'afficher visuellement des **arbres binaires** directement dans la console.
Elle est idéale pour l'enseignement, le débogage ou simplement pour mieux comprendre la structure de vos arbres.

---

## 🚀 Fonctionnalités

* Affichage clair et lisible d'arbres binaires en ASCII
* Support des valeurs de tout type (int, str, etc.)
* Construction simple via des nœuds
* Représentation hiérarchique fidèle

---

## 📦 Installation

Pour l’instant, la librairie peut être intégrée localement dans votre projet :

```bash
git clone https://github.com/votre-repo/DisplayTreePython.git
```

Puis importez-la dans votre script :

```python
from display_tree_python.main import Noeud, Arbre
```

---

## 🛠️ Utilisation rapide

```python
from display_tree_python.main import Noeud, Arbre

n1 = Noeud(1)
n2 = Noeud(2)
n3 = Noeud(3, n1, n2)
arbre = Arbre(0, n3, None)

print(arbre.affichage())
```

---

# 📚 Documentation

## 1. Concept

Un arbre binaire est une structure de données composée de nœuds. Chaque nœud peut avoir :

* une valeur
* un fils gauche
* un fils droit

La librairie repose sur deux classes principales :

* `Noeud`
* `Arbre`

---

## 2. Classe `Noeud`

### Création

```python
Noeud(valeur, gauche=None, droite=None)
```

### Paramètres

| Nom    | Type  | Description                 |
| ------ | ----- | --------------------------- |
| valeur | any   | Valeur stockée dans le nœud |
| gauche | Noeud | Fils gauche (optionnel)     |
| droite | Noeud | Fils droit (optionnel)      |

---

### Exemples

#### Nœud simple

```python
n = Noeud(5)
```

#### Nœud avec enfants

```python
gauche = Noeud(2)
droite = Noeud(8)
racine = Noeud(5, gauche, droite)
```

---

## 3. Classe `Arbre`

### Création

```python
Arbre(valeur, gauche, droite)
```

L'objet `Arbre` représente la racine de votre structure.

---

### Méthodes

#### `affichage()`

Retourne une représentation ASCII de l'arbre.

```python
print(arbre.affichage())
```

---

## 4. Exemple complet

```python
from display_tree_python.main import Noeud, Arbre

n19 = Noeud("r")
n18 = Noeud("q")
n17 = Noeud("p")
n16 = Noeud("o")
n15 = Noeud("i")
n14 = Noeud("x")
n13 = Noeud("z", n19)
n12 = Noeud("y", n18)
n11 = Noeud("u")
n10 = Noeud(0)
n9 = Noeud(9)
n8 = Noeud(8, n16, n17)
n7 = Noeud(7, n14, n15)
n6 = Noeud(6, n12, n13)
n5 = Noeud(5, n10)
n4 = Noeud(4, n8, n9)
n3 = Noeud(3, n6, n7)
n2 = Noeud(2, n4, n5)
n1 = Arbre(1, n2, n3)

print(n1.affichage())
```

---

## 5. Rendu console

```
        _______1_______        
       |               |
    ___2___         ___2___
   |       |       |       |
  _4_     _4      _6_     _6_
 |   |   |       |   |   |   |
 8   8   0       y   y   x   x
| |             |   |
o o             q   r
```

---

## 6. Bonnes pratiques

* Évitez les arbres trop larges pour garder une bonne lisibilité
* Utilisez des valeurs courtes pour un affichage propre
* Préférez une structure équilibrée

---

## 🎯 Cas d'usage

* Apprentissage des structures de données
* Visualisation d'arbres binaires
* Débogage
* Supports pédagogiques

---

## 🤝 Contribution

Les contributions sont les bienvenues !
N'hésitez pas à proposer des améliorations, des optimisations ou de nouvelles fonctionnalités.

---

## 📄 Licence

MIT License

---

## 💡 Idées futures

* Support des arbres n-aires
* Export en image
* Coloration des nœuds
* Mode compact