Validar un árbol de búsqueda binario (Binary Search Tree)

Un método eficiente de validar un árbol de búsqueda binario.

class Node {  
        int data;
        Node left;
        Node right;
     }

boolean checkBST(Node root) {  
 return isBSTUtil(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
    }


boolean isBSTUtil(Node root, int min, int max){  
  if(root == null){
    return true;
  }

  if( 
     root.data > min &&  root.data < max
     && isBSTUtil(root.left, min, root.data)
     && isBSTUtil(root.right, root.data, max)
    ){
    return true;
   }else{
     return false;
   }

}

Fuente:
1. GeeksForGeeks

2. mycodeschool