%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NewTP{ Listes, Arbres}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%
%\NewExo 
%%%%%%%
%%%%%%%
% Reprendre l'exercice sur la Pile du dernier TP.

%%%%%%%
\NewExo 
%%%%%%%
%%%%%%%
 Pour faire un arbre, cr\'eer une classe \textsf{Noeud} qui poss`ede trois 
variables d'instance:\\
- \textsf{filsDroit} et \textsf{filsGauche}, deux r\'ef\'erences \`a des 
instances de \textsf{Noeud};\\
- \textsf{valeur}, un entier.

Cette classe poss\`ede un constructeur qui prend comme param\`etre un entier et
le range dans \textsf{valeur}, les autres variables ne r\'ef\'erencent rien.

Elle poss\`ede une m\'ethode \textsf{ajoute} prenant un entier en param\`etre.
Si cet entier est inf\'erieur \`a \textsf{valeur}: si \textsf{filsGauche} ne 
r\'ef\'erence rien, alors cr\'eer un nouveau \textsf{Noeud} (avec cet entier)
et \textsf{filsGauche} r\'ef\'erencera ce nouveau \textsf{Noeud}, sinon
ajouter l'entier \`a \textsf{filsGauche}. Si l'entier est sup\'erieur \`a
\textsf{valeur}: faire de m\^eme avec \textsf{filsDroit}.

Cette classe poss\`ede aussi une m\'ethode \textsf{toString} qui concat\`ene
le r\'esultat de \textsf{toString} de \textsf{filsGauche} avec \textsf{valeur}
et \textsf{toString} de \textsf{filsDroit}.

{\bf NB:} si possible, aucune variable ne doit \^etre d\'eclar\'ee public.

%%%%%%%
\NewExo 
%%%%%%%
%%%%%%%
%Cr\'eation de la structure d'arbre suivante:
%\begin{figure}[h] 
%\leavevmode 
%\psfig{figure=tree.ps,height=4cm}
%\end{figure}
Cr\'eer une classe arbre qui contienne une variable \textsf{racine} de type 
\textsf{Noeud}, une m'ethode \textsf{ajouter} qui ajoute un entier dans 
l'arbre en bonne place et une m\'ethode \textsf{toString}.


%%%%%%%
\NewExo 
%%%%%%%
%%%%%%%
Cr\'eer une interface \textsf{Comparable} ayant une unique m\'ethode 
\textsf{inferieur} prenant une autre instance de \textsf{Comparable} en
param\`etre.

Reprendre la question pr\'ec\'edente en prenant la variable \textsf{valeur}
de la classe \textsf{Noeud} du type \textsf{Comparable}.

Le tout formera un package \textsf{Arbre}.

%%%%%%%
\NewExo 
%%%%%%%
%%%%%%%
Ecrire une sous-classe de \textsf{String}, \textsf{StringComparable} qui
impl\'emente l'interface \textsf{Comparable}.

Ecrire un programme qui range des chaines de caract\`eres dans un arbre, 
puis les imprime dans l'ordre.














