68 lines
1.9 KiB
Java
68 lines
1.9 KiB
Java
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class BinarySearchTree {
|
|
|
|
private Node root; // Racine de l'arbre
|
|
|
|
// Méthode d'insertion
|
|
public void insert(double value) {
|
|
root = insertRec(root, value);
|
|
}
|
|
|
|
private Node insertRec(Node node, double value) {
|
|
if (node == null) {
|
|
return new Node(value);
|
|
}
|
|
if (value < node.value) {
|
|
node.left = insertRec(node.left, value);
|
|
} else if (value > node.value) {
|
|
node.right = insertRec(node.right, value);
|
|
}
|
|
return node;
|
|
}
|
|
|
|
// Parcours en ordre croissant
|
|
public List<Double> inOrderTraversal() {
|
|
List<Double> sortedList = new ArrayList<>();
|
|
inOrderRec(root, sortedList);
|
|
return sortedList;
|
|
}
|
|
|
|
private void inOrderRec(Node node, List<Double> sortedList) {
|
|
if (node != null) {
|
|
inOrderRec(node.left, sortedList);
|
|
sortedList.add(node.value);
|
|
inOrderRec(node.right, sortedList);
|
|
}
|
|
}
|
|
|
|
// Redéfinir la méthode toString pour afficher les éléments triés
|
|
@Override
|
|
public String toString() {
|
|
return inOrderTraversal().toString();
|
|
}
|
|
|
|
// Main pour le test
|
|
public static void main(String[] args) {
|
|
if (args.length == 0) {
|
|
System.out.println("Veuillez fournir une liste de réels en ligne de commande.");
|
|
return;
|
|
}
|
|
|
|
// Créer un arbre binaire de recherche et y insérer les éléments
|
|
BinarySearchTree bst = new BinarySearchTree();
|
|
for (String arg : args) {
|
|
try {
|
|
double value = Double.parseDouble(arg);
|
|
bst.insert(value);
|
|
} catch (NumberFormatException e) {
|
|
System.out.println("Valeur invalide ignorée : " + arg);
|
|
}
|
|
}
|
|
|
|
// Afficher les éléments triés
|
|
System.out.println("Éléments triés : " + bst);
|
|
}
|
|
}
|