Corrigé du TD 6 : arbre binaire et récursivité

class Noeud
{
    String valeur;
    Noeud gauche;
    Noeud droite;
    Noeud(String _valeur)
    {
        valeur=_valeur;
    }
}
 
 
class Arbre
{
    private Noeud tete;
    void insererValeur(String valeur)
    {
        if(tete==null){tete=new Noeud(valeur);return;}
        Noeud lieu=trouver(valeur);
        if(lieu.valeur==valeur){return;}
        Noeud nouveau=new Noeud(valeur);
        if(valeur.compareTo(lieu.valeur)<0){lieu.gauche=nouveau;}
        if(valeur.compareTo(lieu.valeur)>0){lieu.droite=nouveau;}
    }
 
    Noeud trouver(String valeur)
    {
        if(tete==null){return null;}// arbre vide
        return trouverRecursif(valeur,tete);
    }
    private Noeud trouverRecursif(String valeur,Noeud courant)
    {
        if(valeur.compareTo(courant.valeur)<0 && courant.gauche!=null)
        {
            return trouverRecursif(valeur,courant.gauche);
        }
        if(valeur.compareTo(courant.valeur)>0 && courant.droite!=null)
        {
            return trouverRecursif(valeur,courant.droite);
        }
        return courant;
    }
    void afficher()
    {
        if(tete==null){return;}
        afficherRecusrsif(tete);
    }
 
    private void afficherRecusrsif(Noeud courant)
    {
        if(courant.gauche!=null){afficherRecusrsif(courant.gauche);}
        System.out.println(courant.valeur);
        if(courant.droite!=null){afficherRecusrsif(courant.droite);}
    }
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>