ajout arbres

This commit is contained in:
Come Thuret 2023-12-21 10:38:38 +01:00
commit 2d242054d7
3 changed files with 119 additions and 0 deletions

80
ArbreBinaire.java Normal file
View File

@ -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, "", "");
}
}

30
Main.java Normal file
View File

@ -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();
}
}

9
Noeud.java Normal file
View File

@ -0,0 +1,9 @@
public class Noeud {
int valeur;
Noeud gauche, droit;
public Noeud(int valeur) {
this.valeur = valeur;
this.gauche = this.droit = null;
}
}