Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création d'arbre binaire

Pas d'ABR ou d'AVL

    17 novembre 2017 à 18:04:49

    Bonjour à tous !

    Je suis en train de créer une structure Arbre, mais je voudrais écrire une fonction qui demande à l'utilisateur les valeurs à entrer dans cet arbre.

    Ma structure dans mon fichier Arbre.java :

    import java.util.*;
    
    public class Arbre {
        int racine;
        Arbre sag, sad;
        
        public Arbre(int x, Arbre g, Arbre d) {
            racine = x;
            sag = g;
            sad = d;
        }
        
        public boolean feuille() {
            return (this.sag == null && this.sad == null);
        }
    
        public void afficherArbre() {
            if (this.feuille()) {
                System.out.println("Feuille : " +  this.racine);
            }
            else {
                System.out.println("Noeud : " + this.racine);
                this.sag.afficherArbre();
                this.sad.afficherArbre();
            }
        }
    }



    Mon programme :

    public class main {
        public static Arbre creerArbre() {
            int x, add, choix;
            add = -1;
            choix = 0;
            Arbre A, B;
            System.out.print("Valeur : ");
            x = new Scanner(System.in).nextInt();
            A = new Arbre(x, null, null);
            B = A;
            while (add != 1 && add != 2 && add != 3) {
                System.out.print("Ajout :\n1. Fils gauche\n2. Fils droit\n3. Rien\n");
                add = new Scanner(System.in).nextInt();
                while (add == 1) {
                    B = B.sag;
                    System.out.print("Valeur : ");
                    x = new Scanner(System.in).nextInt();
                    B = new Arbre(x, null, null);
                    System.out.print("Ajout :\n1. Fils gauche\n2. Fils droit\n3. Rien\n");
                    add = new Scanner(System.in).nextInt();
                }
                while (add == 2) {
                    B = B.sad;
                    System.out.print("Valeur : ");
                    x = new Scanner(System.in).nextInt();
                    B = new Arbre(x, null, null);
                    System.out.print("Ajout :\n1. Fils gauche\n2. Fils droit\n3. Rien\n");
                    add = new Scanner(System.in).nextInt();
                }
            }
            return A;
        }
        public static void main(String[] args) {
            Arbre A = creerArbre();
            A.afficherArbre();
        }
    }

    Bon, mon affichage n'est pas terrible, on ne sait pas trop où on est mais ça c'est un autre sujet qui ferait l'objet d'un nouveau topic.
    Le problème c'est que je pense qu'il faudrait soit appeler récursivement la fonction creerArbre() mais comme je n'ai pas de paramètre je ne peux pas. J'ai pensé à créer une autre fonction "ajouterNoeud(int x)" que j'appellerai dans ma fonction creerArbre() sauf que je ne vois pas comment faire.

    Je me demande en fait comment demander à l'utilisateur si le noeud créé a un fils gauche ou un fils droit, et si oui le créer et redemander pour les différents sous-arbres...

    Quelqu'un aurait une idée ?

    Merci d'avance !

    Maxime

    -
    Edité par MaximeRose 17 novembre 2017 à 18:06:39

    • Partager sur Facebook
    • Partager sur Twitter

    Création d'arbre binaire

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown