Code :
- public class AbrPers {
- private Personne pers ;
- private AbrPers gauche ;
- private AbrPers droit ;
- public AbrPers (Personne x){
- pers=x;
- gauche=null;
- droit=null;
- }
- public boolean estVide(){
- return pers==null;
- }
- public Personne getPers(){
- return pers;
- }
- public AbrPers getGauche(){
- return gauche;
- }
- public AbrPers getDroit(){
- return droit;
- }
- public int prof() {
- if (estVide())
- return 0;
- else
- return (1 + Math.max(gauche.prof(),droit.prof()));
- }
-
- public void inserer(Personne x){
- if(estVide()){
- pers=x;
- }else{
- AbrPers a=this;
- int diff;
- while (true){
- diff=x.getNom().compareTo(pers.getNom());
- if(diff==0) return;
- if(diff<0 && a.getGauche()!=null) a=a.getGauche();
- if(diff>0 && a.getDroit()!=null) a=a.getDroit();
- if (diff<0 && a.getGauche()==null){
- gauche=new AbrPers(x);
- }
- if (diff>0 && a.getDroit()==null){
- droit=new AbrPers(x);
- }
- }
- }
- }
- public boolean chercher(Personne x){
- if (estVide()) {
- return false;
- }else{
- AbrPers n=this;
- while(true){
- int diff=x.getNom().compareTo(n.getPers());
- if(diff==0)
- return true;
- if(diff<0){
- if(n.getGauche()==null){
- return false;
- }else{
- n=n.getGauche();
- }
- }else if(n.getDroit()==null){
- return false;
- }else{
- n=n.getDroit();
- }
- }
- }
- }
- public String toString(){
- return toString("(" );
- }
- public String toString(String s){
- if(estVide()) return s+" )";
- s+=pers.getNom()+" ";
- if(gauche!=null && droit!=null){
- if(gauche.getGauche()!=null){
- s=s+"("+gauche.getPers()+" ";
- s+=gauche.getGauche().toString();
- }else{
- s=s+gauche.getPers()+" ";
- }
- if(droit.getDroit()!=null){
- s=s+"("+droit.getPers().getNom()+" ) ";
- s+=droit.getDroit().toString();
- }else{
- s=s+droit.getPers()+" ) ";
- }
- }else if(gauche==null && droit!=null){
- if(droit.getGauche()!=null || droit.getDroit()!=null){
- s+="()"+droit.toString();
- }else{
- s=s+"()"+droit.getPers()+" ) ";
- }
- }else if(gauche!=null && droit==null){
- if(droit.getGauche()!=null || droit.getDroit()!=null){
- s+="("+gauche.toString();
- }else{
- s+=gauche.getPers()+"()) ";
- }
- }else{
- return s+" )";
- }
- return s;
- }
- }
- public class Personne{
- private Comparable nom;
- private int age;
- public Personne (Comparable nom, int age){
- this.nom=nom;
- this.age=age;
- }
- public Comparable getNom(){
- return nom;
- }
- public int getAge(){
- return age;
- }
- }
- public class Prog{
- public static void main(String [] args){
- AbrPers a=new AbrPers(new Personne("Marc",25));
- a.inserer(new Personne("Bernard",85));
- a.inserer(new Personne("Sylvie",28));
- a.inserer(new Personne("Alain",36));
- a.inserer(new Personne("David",8));
- a.inserer(new Personne("Marie",12));
- a.inserer(new Personne("Xavier",34));
- a.inserer(new Personne("Roger",22));
- System.out.println(a.toString());
- System.out.println(a.getGauche());
- System.out.println(a.getDroit());
- System.out.println(a.chercher("David" ));
- System.out.println(a.chercher("Maxime" ));
- System.out.println(a.chercher("Ro" ));
- }
- }
|