Ti posto il codice di un metodo che ho scritto tempo fa che opera su BST con chiavi di tipo int.
codice:
public class BSTNode {
protected int key;
protected BSTNode leftChild;
protected BSTNode rightChild;
}
public class BST {
protected BSTNode root;
protected int precedente;
private boolean isBSTRic(BSTNode t) {
if (t==null) return true;
//visita sottoalbero sx
if (!isBSTRic(t.leftChild)) return false;
//Visita nodo corrente, verificando che la sua chiave SEGUA
//la chiave dell'ultimo nodo visitato (precedente)
if (precedente > t.key) return false;
precedente = t.key;
//visita sottoalbero dx
return isBSTRic(t.rightChild);
}
public static boolean isBST(BSTNode t) {
precedente = Integer.MIN_VALUE;
return isBSTRic(t);
}
}