/** * Renvoie la taille de l'arbre * * @return */ public int taille() { if (this.isLeaf()) return 1; if (gauche != null && droit != null) return 1 + gauche.taille() + droit.taille(); else if (gauche != null) return 1 + gauche.taille(); else return 1 + droit.taille(); }
/** * Ordre total A <bin B si et seulement si taille(A.gauche) < taille(B.gauche) ou taille(A.gauche) * = taille(B.gauche) et (A.gauche < B.gauche ou (A.gauche = B.gauche et A.droit < B.droit) */ @Override public int compareTo(Abub arg0) { if (this.equals(arg0)) return 0; if (this == null) return -1; if (arg0 == null) return 1; if (this.taille() < arg0.taille()) return -1; else if (this.taille() == arg0.taille()) { if (this.gauche != null && arg0.gauche != null) { if (this.gauche.compareTo(arg0.gauche) == -1) return -1; } } if (this.gauche != null && arg0.gauche != null) { if (this.gauche.compareTo(arg0.gauche) == 0) if (this.droit != null && arg0.droit != null) if (this.droit.compareTo(arg0.droit) == -1) return -1; } return 1; }
public String toString() { if (this.parent == null) { if (gauche != null && droit != null) return gauche.toString() + droit.toString(); else if (gauche != null) return gauche.toString(); else if (droit != null) return droit.toString(); else return ""; } if (gauche != null && droit != null) return parent.getId() + " -> " + this.getId() + "\n" + gauche.toString() + droit.toString(); else if (gauche != null) return parent.getId() + " -> " + this.getId() + "\n" + gauche.toString(); else if (droit != null) return parent.getId() + " -> " + this.getId() + "\n" + droit.toString(); else return parent.getId() + " -> " + this.getId() + "\n"; }