ntro.ca

        • Contrats de classe
        • Liens utiles
        • Calendrier
        • Calendrier groupe 2
        • Calendrier groupes 1, 3
        • Structure du cours
        • Évaluations
        • Matériel à se procurer
        • Les profs
          • Marc-Olivier Tremblay
          • Mathieu Bergeron
        • Module 1.1: installation + trier des cartes
        • Module 1.2: rappels POO
        • Module 1.3: tableau d'objets
        • Examen 1
        • Module 2.1: données JSON
        • Module 2.2: données en Java
        • Module 2.3: récursivité
        • Examen 2
        • Module 3.1: structure générique
        • Module 3.2: efficacité (1)
        • Module 3.3: efficacité (2)
        • Examen 3
        • Module 4.1: liste naïve
        • Module 4.2: liste par tableau
        • Module 4.3: liste chaînée
        • Examen 4
        • Module 5.1: mappage naïf
        • Module 5.2: mappage par hachage
        • Module 5.3: mappage par arbre
        • Examen 5
        • Équipes
          • Horaire groupe 1
          • Horaire groupe 2
          • Horaire groupe 3
          • Groupe 1
          • Groupe 2
          • Groupe 3
        • Projets vedettes 2022
        • Projets vedettes 2023
        • Projets vedettes 2024
        • Survol
        • Structure
        • Calendrier
        • Calendrier des séances
        • Évaluations
        • Exemples de jeu
        • Exemples de pages
        • Réponses à vos questions
        • Module 1: créer le projet
        • Module 2: concevoir l'application
        • Module 3: vues NtroFx
        • Module 4: modèle et navigation
        • Module 5: ajouter le dorsal, modifier le modèle
        • Module 7: améliorer l'affichage
        • Module 8: jeu en 2d
        • Module 9: client/serveur
        • Module 10: plusieurs instances du même modèle
        • TP1
        • Examen 1
        • TP2
        • Examen 2
        • Projet de fin de session
      • Ajout Format JSON
        • Calendrier
        • Évaluations
        • Structure du cours
        • Contrat de classe
        • Le prof
        • 01: Windows et Word
          • Astuces et raccourcis
        • 02: Word
        • 03: Word
          • Exercice Word: insertion d'éléments spéciaux
          • Exercice Word: tableaux
        • 04: Word
          • Exercice Word: références
          • TP01: Word (15%)
        • 05: PowerPoint
          • TP02: PowerPoint (10%)
        • 06: Examen Word (20%)
        • 07: Excel
        • 08: Excel
        • 09: Excel
          • TP03: Excel (15%)
        • 10: Excel
        • 11: Examen Excel (20%)
        • 12: Access
        • 13: Access
        • 14: Access
        • 15: Examen Access
      • Sondage H2023 (dept. info)
      • Vision H2023 (dept. info)
      • P1) exercices interactifs de lecture
      • P2) transition Excel vers Python
        • Atelier 2: un exemple
      • Index
      • Point de vue sur l'IA
    Atelier 5.3, exercice A: implanter un arbre
    • Atelier 5.3, exercice A: implanter un arbre
      • Exemple de tests réussis
      • Créer la classe MonNoeud
      • Créer la classe MonArbre
      • Créer la classe MonAtelier5_3_A
      • Compléter les implantations

    Atelier 5.3, exercice A: implanter un arbre #

    Exemple de tests réussis #

    • MonArbre

    Créer la classe MonNoeud #

    • Ajouter la classe suivante au paquet atelier5_3_A

      • Nom de la classe: MonNoeud
    • Débuter l’implantation comme suit:

    public class MonNoeud<C extends Comparable<C>> extends Noeud<C> {
    
    
        public MonNoeud(C valeur) {
            super(valeur);
        }
    
        public MonNoeud(C valeur, Noeud<C> parent) {
            super(valeur, parent);
        }
    
    
        @Override
        public void inserer(C valeur) {
            /*
             * TODO
             *
             * insérer à gauche, à droite ou ici-même
             * selon la comparaison de la valeur courante (si elle existe)
             * et de la valeur à insérer
             *
             * NOTES: 
             * - si valeur < courant: insérer à gauche
             * - si valeur > courant: insérer à droite
             * - sinon sauvegarder la valeur dans le noeud courant
             */
        }
    
        private void insererVersLaGauche(C valeur) {
            /*
             * TODO
             *
             * IMPORTANT: utiliser nouveauNoeud(valeur, this) pour créer un nouveau noeud
             *
             * IMPORTANT: appeler this.equilibrer() **une seule fois**, 
             *            tout de suite après avoir insérer un nouveau noeud
             *
             */
        }
    
        private void insererVersLaDroite(C valeur) {
            /*
             * TODO
             *
             * IMPORTANT: utiliser nouveauNoeud(valeur, this) pour créer un nouveau noeud
             *
             * IMPORTANT: appeler this.equilibrer() **une seule fois**, 
             *            tout de suite après avoir insérer un nouveau noeud
             *
             */
        }
    
        @Override
        protected Noeud<C> nouveauNoeud(C valeur, Noeud<C> parent) {
            return new MonNoeud<C>(valeur, parent);
        }
    
        @Override
        protected Noeud<C> nouveauNoeud(C valeur) {
            return new MonNoeud<C>(valeur);
        }
    }
    

    Créer la classe MonArbre #

    • Ajouter la classe suivante au paquet atelier5_3_A

      • Nom de la classe: MonArbre
    • Débuter l’implantation comme suit:

    public class MonArbre<C extends Comparable<C>> extends Arbre<C> {
        /*
         * Dans la classe parent
         *
         * protected Noeud<C> racine;
         *
         * public Noeud<C> getRacine() {
         *    return racine;
         * }
         *
         * public void setRacine(Noeud<C> racine) {
         *    this.racine = racine;
         * }
         *
         */
    
        @Override
        public Noeud<C> racine() {
            return racine;
        }
    
        @Override
        public void ajouter(C valeur) {
            // TODO
        }
    
        @Override
        public void retirer(C valeur) {
            // TODO
        }
    
        @Override
        public Noeud<C> trouverNoeud(C valeur) {
            // TODO
        }
        
        private Noeud<C> trouverNoeud(Noeud<C> curseur, C valeur){
            // TODO
        }
    
        @Override
        public List<Noeud<C>> tousLesNoeuds() {
            // TODO
        }
        
        @Override
        public int nombreDeNoeuds() {
            // TODO
        }
    }
    

    Créer la classe MonAtelier5_3_A #

    • Ajouter la classe suivante au paquet atelier5_3_A

      • Nom de la classe: MonAtelier5_3_A
    • Implanter comme suit:

    public class MonAtelier5_3_A extends Atelier5_3_A {
        
        public static void main(String[] args) {
            new MonAtelier5_3_A().valider();
        }
    
        @Override
        public Arbre<Character> fournirArbre() {
            return new MonArbre<Character>();
        }
    }
    

    Compléter les implantations #

    • Utiliser l’outil de validation pour tester votre code
    • vous pouvez aussi afficher le fichier html:

      • Arbre.html
      • (à la racine du projet)
    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike
    • Atelier 5.3, exercice A: implanter un arbre
      • Exemple de tests réussis
      • Créer la classe MonNoeud
      • Créer la classe MonArbre
      • Créer la classe MonAtelier5_3_A
      • Compléter les implantations