Check BST
left <= current < right
package graphs;
import graphs.commons.Tree;
/**
 * left <= current < right
 */
class CheckBST {
    public static void main(String[] args) {
        Tree tree1 = new Tree(25);
        tree1.left = new Tree(20);
        tree1.left.left = new Tree(16);
        tree1.left.right = new Tree(22);
        tree1.right = new Tree(30);
        tree1.right.left = new Tree(29);
        tree1.right.right = new Tree(32);
        CheckBST bst = new CheckBST();
        System.out.println(bst.checkBST(tree1, null, null));
        Tree tree2 = new Tree(10);
        tree2.left = new Tree(22);
        tree2.right = new Tree(2);
        CheckBST bst2 = new CheckBST();
        System.out.println(bst2.checkBST(tree2, null, null));
    }
    boolean checkBST(Tree tree, Integer min, Integer max) {
        if (tree == null)
            return true;
        
         
        if((min != null && min > tree.data) || (max != null && max <= tree.data)) {
            return false;
        }
        
        // OR used so that both left & right gets checked; if one fails, then quit with false result
        if (!(checkBST(tree.left, min, tree.data)) || !(checkBST(tree.right, tree.data, max))) {
            return false;
        }
        return true;
    }
}
Updated on 2021-02-03