Transformation d'un Arbre Binaire de Recherche en Liste Doublement Chaînée Triée
La conversion d'un arbre binaire de recherche (BST) en une liste doublement chaînée triée est un problème classique d'algorithmique. L'objectif est de réorganiser les pointeurs de l'arbre (gauche et droite) pour qu'ils fassent office de pointeurs de liste (précédent et suivant), tout en conservent l'ordre croissant des éléments sans allouer de ...
Publié le 25 septembre à 22h52
Résolution de problèmes avec la programmation dynamique
Approches de programmation dynamique
Suite de Fibonacci - Approche descendante
Le problème de Fibonacci (LeetCode 509) peut être résolu avec deux approches descendantes : la récursion complète et la récursion avec mémorisation.
public int fibonacci(int n) {
int[] cache = new int[n + 1];
return calculerFibonacci(cache, n);
}
private int ...
Publié le 10 septembre à 18h16
Vérification d'un Arbre Binaire de Recherche
Description du Problème
Vous êtes donné la racine d'un arbre binaire et vous devez déterminer s'il s'agit d'un arbre binaire de recherche valide.
Une arbre binaire de recherche (ABR) est défini par les propriétés suivantes :
Tous les nœuds de son sous-arbre gauche sont inférieurs à la valeur du nœud actuel.
Tous les nœuds de son sous-arbre dro ...
Publié le 27 août à 13h30
Exercices de programmation Java : nombres aléatoires, surcharge et récursivité
Calcul des carrés
Voici un programme qui calcule et affiche les carrés des entiers de 1 à 10.
public class CalculCarre {
public static void main(String[] args) {
int resultat;
for (int i = 1; i <= 10; i++) {
resultat = carre(i);
System.out.println("Le carré de " + i + " e ...
Publié le 26 août à 02h02
Optimisation de la récursion en Python : Implémenter la Tail Call Optimization
En Python, la profondeur de la pile d'appels récursifs est limitée par défaut (généralement à 1000). On peut consulter cette limite via la fonction sys.getrecursionlimit(). Si un algorithme dépasse ce seuil, l'interpréteur lève une exception RecursionError.
Bien qu'il soit possible d'augmenter cette limite manuellement avec sys.setrecursionlimi ...
Publié le 18 août à 16h06
Maîtriser les Méthodes Java : Surcharge, Paramètres Variables et Récursion
Introduction aux Méthodes Java
En programmation Java, une méthode est un bloc de code ou un ensemble d'instructions regroupées pour effectuer une tâche ou une opération spécifique. C'est un concept fondamental pour organiser le code, le rendre réutilisable et faciliter la maintenance des applications. Par exemple, dans l'expression courante Sys ...
Publié le 6 août à 09h02
Programmation dynamique sur les chiffres
La programmation dynamique sur les chiffres permet d'exploiter la structure des nombres pour compter ou vérifier des propriétés sur des plages de valeurs. L'idée principale est de traiter les nombres chiffre par chiffre, souvent en partent du chiffre de poids fort.
Comptage des occurrences de chiffres dans un intervalle
Problème : Étant donné d ...
Publié le 29 juillet à 01h50
Création d'une structure arborescente multiniveau avec Java et Stream API
Contexte d'utilisation
Dans le développement d'applications d'entreprise, il est fréquent de devoir transformer une liste d'objets plats provenant d'une base de données en une structure hiérarchique (arbre). Ce besoin se présente souvent pour l'affichage de menus, d'organigrammes ou de catégories de produits.
Modélisation de la base de données
...
Publié le 18 juillet à 17h21
La Tour de Hanoï : Une Introduction Récursive
Le nombre total de mouvements requis pour déplacer 64 disques est de 264 - 1. Ce nombre est astronmoique (environ 18 trillions de trillions). Si un prêtre pouvait déplacer un disque par seconde, sans pause, il faudrait environ 595 milliards d'années pour accomplir la tâche, dépassant de loin l'âge actuel de l'univers.
Règles du Jeu
Un seul dis ...
Publié le 14 juillet à 20h15
Construction d'un ordinateur à partir de sous-arbres récursifs
Cet article explore une méthode de construction d'une structure arborescente basée sur la récursion, particulièrement adoptée pour optimiser la gestion des sous-arbres identiques. L'objectif est de construire un ordinateur virtuel représenté par un arbre binaire, où la répétition de sous-structures peut être efficacement gérée par le partage de ...
Publié le 12 juillet à 04h42