From 2d242054d7d6ffb4cec3a18f209dba32e1fd33af Mon Sep 17 00:00:00 2001 From: Come Thuret Date: Thu, 21 Dec 2023 10:38:38 +0100 Subject: [PATCH] ajout arbres --- ArbreBinaire.java | 80 +++++++++++++++++++++++++++++++++++++++++++++++ Main.java | 30 ++++++++++++++++++ Noeud.java | 9 ++++++ 3 files changed, 119 insertions(+) create mode 100644 ArbreBinaire.java create mode 100644 Main.java create mode 100644 Noeud.java diff --git a/ArbreBinaire.java b/ArbreBinaire.java new file mode 100644 index 0000000..e198fe0 --- /dev/null +++ b/ArbreBinaire.java @@ -0,0 +1,80 @@ +public class ArbreBinaire { + Noeud racine; + + public ArbreBinaire() { + this.racine = null; + } + + // Méthode pour insérer un nouvel élément dans l'arbre + private Noeud insererNoeud(Noeud racine, int valeur) { + if (racine == null) { + return new Noeud(valeur); + } + + if (valeur < racine.valeur) { + racine.gauche = insererNoeud(racine.gauche, valeur); + } else if (valeur > racine.valeur) { + racine.droit = insererNoeud(racine.droit, valeur); + } + + return racine; + } + + public void inserer(int valeur) { + racine = insererNoeud(racine, valeur); + } + + // Méthode de parcours préfixe + private void parcoursPrefixe(Noeud racine) { + if (racine != null) { + System.out.print(racine.valeur + " "); + parcoursPrefixe(racine.gauche); + parcoursPrefixe(racine.droit); + } + } + + public void parcoursPrefixe() { + parcoursPrefixe(racine); + System.out.println(); + } + + // Méthode de parcours postfixe + private void parcoursPostfixe(Noeud racine) { + if (racine != null) { + parcoursPostfixe(racine.gauche); + parcoursPostfixe(racine.droit); + System.out.print(racine.valeur + " "); + } + } + + public void parcoursPostfixe() { + parcoursPostfixe(racine); + System.out.println(); + } + + // Méthode de parcours infixe + private void parcoursInfixe(Noeud racine) { + if (racine != null) { + parcoursInfixe(racine.gauche); + System.out.print(racine.valeur + " "); + parcoursInfixe(racine.droit); + } + } + + public void parcoursInfixe() { + parcoursInfixe(racine); + System.out.println(); + } + + private void afficherArbre(Noeud racine, String espace, String direction) { + if (racine != null) { + System.out.println(espace + direction + racine.valeur); + afficherArbre(racine.gauche, espace + "│ ", "├─"); + afficherArbre(racine.droit, espace + " ", "└─"); + } + } + + public void afficherArbre() { + afficherArbre(racine, "", ""); + } +} diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..15426f2 --- /dev/null +++ b/Main.java @@ -0,0 +1,30 @@ +public class Main { + public static void main(String[] args) { + ArbreBinaire arbre = new ArbreBinaire(); + + // Insérer des éléments dans l'arbre + arbre.inserer(50); + arbre.inserer(30); + arbre.inserer(70); + arbre.inserer(20); + arbre.inserer(40); + arbre.inserer(60); + arbre.inserer(80); + + // Afficher l'arbre + System.out.println("Affichage de l'arbre :"); + arbre.afficherArbre(); + + // Parcours préfixe + System.out.println("Parcours préfixe:"); + arbre.parcoursPrefixe(); + + // Parcours postfixe + System.out.println("Parcours postfixe:"); + arbre.parcoursPostfixe(); + + // Parcours infixe + System.out.println("Parcours infixe:"); + arbre.parcoursInfixe(); + } +} diff --git a/Noeud.java b/Noeud.java new file mode 100644 index 0000000..393e641 --- /dev/null +++ b/Noeud.java @@ -0,0 +1,9 @@ +public class Noeud { + int valeur; + Noeud gauche, droit; + + public Noeud(int valeur) { + this.valeur = valeur; + this.gauche = this.droit = null; + } +}