Skip to content
Snippets Groups Projects
Commit 93b0bf1d authored by paul.albuquer's avatar paul.albuquer
Browse files

rephrased few things and corrected typos

parent 28b435fa
No related branches found
No related tags found
No related merge requests found
Pipeline #38886 passed
---
title: "Arbres AVL et Arbres quaternaires"
title: "Arbres AVL et arbres quaternaires"
date: "2025-03-28"
---
......@@ -398,8 +398,8 @@ graph TD;
1. On supprime comme pour un arbre binaire de recherche.
2. Si un nœud est déséquilibré, on le rééquilibre.
* Cette opération peut déséquilibrer un autre nœud.
3. On continue à rééquilibrer tant qu'il y a des nœuds à équilibrer.
* Cette opération peut déséquilibrer un autre nœud sur le chemin menant au noeud supprimé.
3. On continue à rééquilibrer tant qu'il y a des nœuds à équilibrer en remontant le chemin.
# Les arbres quaternaires
......@@ -432,7 +432,7 @@ Son équivalent tri-dimensionnel est l'octree (chaque nœud a 8 enfants ou aucun
* Indexation spatiale.
* Détection de collisions.
* Simulation de galaxies, Barnes-Hut.
* Simulation de galaxies (algorithme de Barnes-Hut).
# Exemple de compression
......@@ -479,7 +479,7 @@ Image 64 pixels, arbre 25 nœuds.
struct node
info
node sup_gauche, sup_droit,
inf_gauche, inf_droit
inf_gauche, inf_droit
```
![Un nœud d'arbre quaternaire.](figs/quad_struct.svg)
......@@ -524,7 +524,7 @@ struct _node {
bool est_feuille(noeud)
retourne
est_vide(sup_gauche(noeud)) &&
est_vide(sup_droit(noeud)) &&
est_vide(sup_droit(noeud)) &&
est_vide(inf_gauche(noeud)) &&
est_vide(inf_droit(noeud))
```
......@@ -569,11 +569,11 @@ bool is_leaf(node *tree) {
# Problème à résoudre
* Construire un arbre quaternaire à partir d'une image:
* Créer l'arbre (allouer la mémoire pour tous les nœuds),
* Le remplir avec les valeurs des pixels.
* Créer l'arbre (allouer la mémoire pour tous les nœuds)
* Remplir l'arbre avec les valeurs des pixels
* Compression de l'image:
* Si les pixels sont les mêmes dans le quadrant on supprime le sous-arbre (sans perte)
* Si les pixels dévient pas trop on supprime le quadrant (avec perte)
* Si les pixels ne dévient pas trop, on supprime le quadrant (avec perte)
# Création de l'arbre
......@@ -697,7 +697,7 @@ int depth(node *qt) {
# Fonctions utiles (2/4)
* On veut transformer une ligne/colonne en feuille.
* On veut transférer la valeur d'une case ligne/colonne dans une feuille.
* Comment?
::: columns
......@@ -824,7 +824,7 @@ noeud position(li, co, arbre)
. . .
```C
arbre matrice_à_arbre(matrice)
arbre matrice_vers_arbre(matrice)
arbre = creer_arbre(profondeur)
pour li de 0 à nb_lignes(matrice)
pour co de 0 à nb_colonnes(matrice)
......@@ -842,11 +842,10 @@ arbre matrice_à_arbre(matrice)
\footnotesize
```C
node *matrix_to_qt(int nb_li, int nb_co, int matrix[nb_li][nb_co], int depth)
{
node *matrix_to_qt(int nb_li, int nb_co, int matrix[nb_li][nb_co], int depth) {
node *qt = qt_create(depth);
for (int li = 0; li < nd_li; ++li) {
for (int co = 0; co < nd_co; ++co) {
for (int li = 0; li < nb_li; ++li) {
for (int co = 0; co < nb_co; ++co) {
node *current = position(li, co, qt);
current->info = matrix[li][co];
}
......@@ -863,7 +862,7 @@ node *matrix_to_qt(int nb_li, int nb_co, int matrix[nb_li][nb_co], int depth)
. . .
```C
matrice arbre_à_matrice(arbre)
matrice arbre_vers_matrice(arbre)
matrice = creer_matrice(nb_lignes(arbre), nb_colonnes(arbre))
pour li de 0 à nb_lignes(matrice)
pour co de 0 à nb_colonnes(matrice)
......@@ -881,13 +880,14 @@ matrice arbre_à_matrice(arbre)
\footnotesize
```C
void qt_to_matrix(node *qt, int nb_li, int nb_co, int matrix[nb_li][nb_co])
for (int li = 0; li < nd_li; ++li) {
for (int co = 0; co < nd_co; ++co) {
void qt_to_matrix(node *qt, int nb_li, int nb_co, int matrix[nb_li][nb_co]) {
for (int li = 0; li < nb_li; ++li) {
for (int co = 0; co < nb_co; ++co) {
node *current = position(li, co, qt);
matrix[li][co] = current->info;
}
}
}
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment