Un algotirmo scritto in 5 sec sarebbe
Codice:
public static boolean isBST(Albero alb){
if (alb==null) return true; //Un albero vuoto è un albero di ricerca
if (alb.sx==null && alb.dx==null) return true; //Se sono foglia sono un albero di ricerca
if (alb.sx==null && alb.info.compareTo(alb.dx.info)<0) return true; //Se il sottoalbero sinistro è vuoto e sono piu piccolo del sottoalbero destro sono un BST
if (alb.sx==null && alb.info.compareTo(alb.dx.info)>0) return false; //Se il sottoalbero sinistro è vuoto e sono piu grande del sottoalbero destro non sono un BST
if (alb.dx==null && alb.info.compareTo(alb.sx.info)>0) return true; //Se il sottoalbero destro è vuoto e sono piu grande del sottoalbero sinistro sono un BST
if (alb.dx==null && alb.info.compareTo(alb.sx.info)<0) return true; //Se il sottoalbero destro è vuoto e sono piu piccolo del sottoalbero sinistro non sono un BST
if (alb.info.compareTo(alb.sx.info)<0 || alb.info.compareTo(alb.dx.info)>0) return false; //Se sono piu grande del sottoalbero destro o piu piccolo di quello sinistro non sono un BST
return isBSD(alb.sx) && isBST(alb.dx); //controllo se i miei figli sono bst
}
non garantisco che sia giusto