fin du cotrole blanc dev32

This commit is contained in:
2023-12-19 19:50:02 +01:00
parent 1fc92e50c3
commit b1a83ffc24
15 changed files with 133 additions and 66 deletions

View File

@@ -0,0 +1,55 @@
import java.util.*;
public class Arbre{
private Noeud racine = null;
private int nbNoeud = 0;
public Arbre(int[] tableau){
for (int valeur : tableau){
this.add(valeur);
}
}
public void add(int valeur){
this.nbNoeud ++;
if (racine == null){
this.racine = new Noeud(valeur);
}
else{
Queue<Noeud> parcours = new LinkedList<>();
Noeud noeudActuel;
parcours.offer(this.racine);
do{
noeudActuel = parcours.poll();
} while(noeudActuel.add(valeur, parcours) == false);
}
}
public int[] toArray(){
if (racine == null){
return new int[0];
}
int[] resultat = new int[this.nbNoeud];
Queue<Noeud> parcours = new LinkedList<>();
int i;
parcours.offer(this.racine);
for (i=0; i<this.nbNoeud; i++){
Noeud noeud = parcours.poll();
int valeur;
if (noeud == null){
valeur = -1;
}
else{
valeur = noeud.getValeur(parcours);
}
resultat[i] = valeur;
}
return resultat;
}
}

View File

@@ -0,0 +1,24 @@
public class Main{
public static void main(String[] args){
int[] tableauEntier = new int[args.length];
int i;
try{
for (i=0; i<args.length; i++){
tableauEntier[i] = Integer.parseInt(args[i]);
if (tableauEntier[i] < 0){
throw new NumberFormatException("Erreur : l'entier naturel saisis est negatif "+tableauEntier[i]);
}
}
Arbre arbre = new Arbre(tableauEntier);
int[] tableauArbre = arbre.toArray();
for (i=0; i<tableauArbre.length; i++){
System.out.print(tableauArbre[i] + " ");
}
System.out.println();
}
catch(NumberFormatException e){
System.out.println("argument invalide");
}
}
}

View File

@@ -0,0 +1,31 @@
import java.util.*;
public class Noeud{
private Noeud gauche = null;
private Noeud droite = null;
private int valeur;
public Noeud(int valeur){
this.valeur = valeur;
}
public boolean add(int valeur, Queue<Noeud> parcours){
if (this.gauche == null){
this.gauche = new Noeud(valeur);
return true;
}
if (this.droite == null){
this.droite = new Noeud(valeur);
return true;
}
parcours.offer(this.gauche);
parcours.offer(this.droite);
return false;
}
public int getValeur(Queue<Noeud> parcours){
parcours.offer(this.gauche);
parcours.offer(this.droite);
return this.valeur;
}
}